我有一个Javascript正则表达式,如下所示:
/^[a-zA-Z0-9 !@#$%^&*()-_-~.+,/\" ]+$/
其允许以下条件:
1.只允许字母
1.只允许数字
1.允许字母和数字组合
1.允许字母、数字和特殊字符的组合
我想修改上面的正则表达式,以涵盖两个更多的情况如下:
仅不允许使用特殊字符
字符串不能以特殊字符开头
所以我基本要求是:
string = 'abc' -> Correct
string = '123' -> Correct
string = 'abc123' ->Correct
string = 'abc123!@#' ->Correct
string = 'abc!@#123' -> Correct
string = '123!@#abc' -> Correct
string = '!@#' -> Wrong
string = '!@#abc' -> Wrong
string = '!@#123' -> Wrong
string = '!@#abc123' -> Wrong
有人能帮我一下吗?
2条答案
按热度按时间dojqjjoe1#
您可以要求至少一个字母数字:
另外,我认为您希望匹配文字
-
,因此需要重复它,只需转义,将-_-
更改为\-_
,或者-更好-移动到字符类的末尾。(?=[^a-zA-Z0-9]*[a-zA-Z0-9])
模式是一个正字符类,它要求在零个或多个字符(ASCII字母或数字除外)之后紧跟一个ASCII字母或数字,位于当前位置的右侧,此处,从字符串的开头开始。3wabscal2#
只需将
[a-zA-Z0-9]
添加到正则表达式的开头:请注意,如果在类(即
[
...]
)中有四个特殊字符,则必须通过在其前面加上反斜杠(\
)来对其进行转义,以便将其解释为其字面含义:RegEx101