我有这个正则表达式,我需要防止密码包含以下任何符号:!@#$%^&*()_
,它正在为!@#$%
工作但不适用于此密码 !@#$%D
.
$scope.matchPatternPassword = new RegExp("[^!@#$%^&*()_]$");
最佳答案
您的正则表达式仅检查字符串末尾的任何符号,这就是以字母结尾的符号有效的原因。
正则表达式应该是:
$scope.matchPatternPassword = /^[^!@#$%^&*()_]+$/;
这会匹配任何不包含任何这些字符的字符串。
这是一个工作示例:https://regexr.com/3nh9f
const regex = /^[^!@#$%^&*()_]+$/;
const passwords = [
'!@#$%',
'!@#$%D',
'yes',
'valid-password',
'im-valid-too',
'invalid$',
'super!-invalid',
'mypassword'
];
console.log(passwords.filter(password => regex.test(password)));
关于javascript - 防止字符串中出现特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714241/