现在我有一个正则表达式可以防止用户输入任何特殊字符。唯一允许的字符是 A 到 Z、0 到 9 或空格。
我想改进这个正则表达式以防止以下情况:
我现在用来防止特殊字符的正则表达式如下所示,看起来工作得很好,即:
^[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,并且没有前导或尾随空格。
谢谢。
您可以使用以下正则表达式:
^[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)要求它在开始。