防止字符串中的特殊字符

时间:2018-04-08 03:51:03

标签: javascript angularjs regex

我有这个正则表达式,我需要阻止密码包含以下任何符号:!@#$%^&*()_,它适用于!@#$%但不适用于此密码!@#$%D

$scope.matchPatternPassword = new RegExp("[^!@#$%^&*()_]$");

1 个答案:

答案 0 :(得分:2)

你的正则表达式只检查字符串末尾的任何符号,这就是为什么以字母结尾的符号起作用的原因。

正则表达式应该是:

$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)));