正则表达式以防止尾随空格和额外空格

Bil*_*ill 3 regex

现在我有一个正则表达式可以防止用户输入任何特殊字符。唯一允许的字符是 A 到 Z、0 到 9 或空格。

我想改进这个正则表达式以防止以下情况:

  1. 没有前导/训练空格 - 如果用户在条目之前或之后键入一个或多个空格,则不允许。
  2. 没有双空格 - 如果用户多次键入空格键,则不允许。

我现在用来防止特殊字符的正则表达式如下所示,看起来工作得很好,即:

^[a-zA-Z0-9 ]+$
Run Code Online (Sandbox Code Playgroud)

按照其他一些想法,我尝试了所有这些选项,但它们不起作用:

^\A\s+[a-zA-Z0-9 ]+$\A\s+
/s*^[a-zA-Z0-9 ]+$/s*
Run Code Online (Sandbox Code Playgroud)

我可以帮我处理这段代码吗?同样,我只想要字母 AZ、数字 0-9,并且没有前导或尾随空格。

谢谢。

Wik*_*żew 5

您可以使用以下正则表达式:

^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+)*$
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

正则表达式将匹配开头的字母数字(1 个或多个),然后匹配单个空格的零个或多个块,然后是一个或多个字母数字。

作为替代方案,这里有一个基于前瞻的正则表达式(但效率较低):

^(?!.* {2})(?=\S)(?=.*\S$)[a-zA-Z0-9 ]+$
Run Code Online (Sandbox Code Playgroud)

查看正则表达式演示

(?!.* {2})不允许连续的空格,并(?=.*\S$)要求非空白是在字符串的结束,(?=\S)要求它在开始。

  • 像魅力一样工作。非常感谢! (2认同)