现在我有一个正则表达式可以防止用户输入任何特殊字符。唯一允许的字符是 A 到 Z、0 到 9 或空格。
我想改进这个正则表达式以防止以下情况:
我现在用来防止特殊字符的正则表达式如下所示,看起来工作得很好,即:
^[a-zA-Z0-9 ]+$
按照其他一些想法,我尝试了所有这些选项,但它们不起作用:
^\A\s+[a-zA-Z0-9 ]+$\A\s+
/s*^[a-zA-Z0-9 ]+$/s*
我可以帮我处理这段代码吗?同样,我只想要字母 A-Z、数字 0-9,并且没有前导或尾随空格。
谢谢。
最佳答案
您可以使用以下正则表达式:
^[a-zA-Z0-9]+(?: [a-zA-Z0-9]+)*$
见 regex demo .
正则表达式将匹配开头的字母数字(1 个或多个),然后匹配单个空格的零个或多个块,然后是一个或多个字母数字。
作为替代方案,这里有一个基于前瞻的正则表达式(但效率较低):
^(?!.* {2})(?=\S)(?=.*\S$)[a-zA-Z0-9 ]+$
见 regex demo
(?!.* {2})
不允许连续空格和 (?=.*\S$)
要求字符串末尾有一个非空白字符,并且 (?=\S)
一开始就需要它。
关于正则表达式以防止尾随空格和额外空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373046/