我正在尝试构建一个允许使用以下字符的正则表达式:
A-Z
a-z
1234567890
!@#$%&*()_-+={[}]|\:;"'<,>.?/~`
Run Code Online (Sandbox Code Playgroud)
所有其他字符均无效。这是我构建的正则表达式,但它没有按我预期的方式工作。我希望 .test() 在存在无效字符时返回 false:
var string = 'abcd^wyd';
function isValidPassword () {
var regex = /[0-9A-Za-z!@#$%&*()_\-+={[}\]|\:;"'<,>.?\/\\~`]+[0-9A-Za-z!@#$%&*()_\-+={[}\]|\:;"'<,>.?\/\\~`]*/g
return regex.test(string);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,即使字符串中存在“^”,测试也始终返回“true”。
您的正则表达式仅检查是否至少存在一个允许的字符。将开始和结束锚点添加到正则表达式中 -/^...$/
var string = 'abcd^wyd';
function isValidPassword () {
var regex = /^[0-9A-Za-z!@#$%&*()_\-+={[}\]|\:;"'<,>.?\/\\~`]+[0-9A-Za-z!@#$%&*()_\-+={[}\]|\:;"'<,>.?\/\\~`]*$/g
return regex.test(string);
}
Run Code Online (Sandbox Code Playgroud)
...另一种方法是,不是检查所有字符是否良好,而是寻找坏字符,这更有效,因为一旦找到一个字符,您就可以停止查找...
// return true if string does not (`!`) match a character that is not (`^`) in the set...
return !/[^0-9A-Za-z!@#$%&*()_\-+={[}\]|\:;"'<,>.?\/\\~`]/.test()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10573 次 |
| 最近记录: |