我正在使用以下正则表达式进行验证,如
字符串应为字母数字,其中包含空格,连字符和下划线
[^-\s][a-zA-Z0-9_\s-]+$
但这不接受单个字符输入。任何人都可以帮我实现相同的验证,并接受单个字符的字母数字吗?
答案 0 :(得分:4)
这个正则表达式应该有效:
^[\w-][\w\s-]*$
这将使第一个字符为连字符或字母数字但是休息0或更多字符是字母数字OR空格或连字符的任意组合
请注意\w
代表[A-Za-z0-9_]
如果您只想要第一个字符为alpha-num,请使用:
^\w[\w\s-]*$
答案 1 :(得分:1)
正则表达式[^-\s][a-zA-Z0-9_\s-]+$
正在寻找:
因此需要至少两个字符才能找到匹配项。
如果您使用第二个字符集[a-zA-Z0-9_\s-]
并从中排除空格和连字符(正如您在字符串开头所需要的那样),那么您将获得[a-zA-Z0-9_]
。
所以,你想匹配:
^[a-zA-Z0-9_][a-zA-Z0-9_\s-]*$
由于\w
是[a-zA-Z0-9_]
的等效正则表达式字符类,因此可以简化为:
^\w[\w\s-]*$
答案 2 :(得分:1)
所以你的字符串不应该不以“not space or hyphen”开头,而是反之:使用'a-z,0-9,_'。
请改为尝试:
^[a-zA-Z0-9_][a-zA-Z0-9_\s-]*$
第一个字符类中的一个字符是必需的,不包含空格或连字符。之后,任何事情都会 - 零或更多次。