[英]Regex to accept special character only in presence of alphabets or numeric value in JavaScript?
我有一个 Javascript 这样的正则表达式:
/^[a-zA-Z0-9 !@#$%^&*()-_-~.+,/\" ]+$/
它允许以下条件:
只允许字母
只允许数字
允许字母和数字的组合
允许字母、数字和特殊字符的组合
我想修改上面的正则表达式以涵盖以下两种情况:
只允许使用特殊字符
字符串不应以特殊字符开头
所以基本上我的要求是:
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
有人可以帮我吗?
您可以要求至少一个字母数字:
/^(?=[^a-zA-Z0-9]*[a-zA-Z0-9])[a-zA-Z0-9 !@#$%^&*()_~.+,/\" -]+$/
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
另外,我想你想匹配一个文字-
,所以需要重复它,只是转义,将-_-
更改为\-_
,或者 - 更好 - 移动到字符 class 的末尾。
(?=[^a-zA-Z0-9]*[a-zA-Z0-9])
模式是一个正字符 class 需要在除 ASCII 字母或数字以外的任何零个或多个字符之后的 ASCII 数字字母, 紧接在当前位置的右侧,此处,从字符串的开头开始。
只需将[a-zA-Z0-9]
添加到正则表达式的开头:
/^[a-zA-Z0-9][a-zA-Z0-9 \^\\\-!@#$%&*()_~.+,/'"]+$/gm
请注意,如果在 class(即[
... ]
)中,有四个特殊字符必须通过在其前面加上反斜杠 ( \
) 进行转义,以便将其解释为字面含义:
// If within a class (ie [...])
^ \ - ]
// If not within a class
\ ^ $ . * + ? ( ) [ ] { } |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.