Regex允许某些特殊字符-转义问题
Regex to allow certain special characters - escape issue
我正在开发一个javascript正则表达式,我打算将其与jquery验证插件一起使用(我将添加它作为一个附加方法)。它必须(除其他规则外):
-
测试是否输入了以下至少一个特殊字符:
!, ", #, $, %, &, ', (, ), *, +,-, .,/, :, ;, <, =, >, ?, @, [, ', ], ^, _, `, {, |, }, ~
-
不允许3个连续的相同字符:
通过:
aa
99
++
未通过:
aaa
999
+++
我的正则表达式的问题是,它对以下提到的规则有问题:我认为这个问题与逃跑有关,我尝试过逃跑+和-,但都无济于事。有人能帮忙吗!这是我的正则表达式:http://regexr.com/3ack3
这是您可以通过使用多个正则表达式来真正简化生活的需求之一,而不是试图将所有逻辑塞进一个包含许多断言的复杂正则表达式中。以下是一些实现您需求的JavaScript:
var specialCharRegex = /[!"#$%&'()*+.'/:;<=>?@'[''']^_`{|}~-]/;
var threeConsecutiveRegex = /(.)'1'1/;
var input = prompt();
if (specialCharRegex.test(input) && !threeConsecutiveRegex.test(input)) {
alert('passed');
} else {
alert('failed');
} // end if
http://jsfiddle.net/t8609xv2/
关于棘手问题的一些注意事项:
- 在括号表达式中,必须对以下四个特殊字符进行反斜杠转义:
/[']
。(正斜杠是因为它分隔正则表达式,反斜杠是因为是转义符,括号是因为它们分隔括号表达式。) - 在括号表达式中,短划线必须移到末尾,否则它可能会指定一个字符范围。在结束时,它从不指定范围,所以放在那里总是更安全
这种模块化方法也有利于维护,因为您将更容易在以后的时间点进行更改(修改/添加/删除正则表达式,或更改if测试逻辑)。
另一个好处是,您可以独立测试每个正则表达式,这可以让您向用户提供更准确的错误消息,而不是只说"无效密码"之类的话。
编辑:以下是如何将输入中接受的字符列入白名单:
var specialCharRegex = /[!"#$%&'()*+.'/:;<=>?@'[''']^_`{|}~-]/;
var threeConsecutiveRegex = /(.)'1'1/;
var nonWhitelistCharRegex = /[^a-zA-Z0-9!"#$%&'()*+.'/:;<=>?@'[''']^_`{|}~-]/;
var input = prompt();
if (specialCharRegex.test(input) && !threeConsecutiveRegex.test(input) && !nonWhitelistCharRegex.test(input)) {
alert('passed');
} else {
alert('failed');
} // end if
http://jsfiddle.net/t8609xv2/2/
^(?=.*[!"#$%&'()*+,,'/:;<=>?@'[']^_`{|}~-])(?!.*(.)'1'1).*$
试试这个。请参阅演示。
https://regex101.com/r/wX9fR1/10
您需要一个positive lookahead
来检查special characters
。
和
一个negative lookahead
来检查一个字符是否在那里3
次。
您可以使用以下正则表达式:
^(?!.*?(.)'1{2})(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?='D*'d)(?=.*?[!@#$%^&*()_='[']{};':"''|,.<>'/?+-]).{8,20}$
RegEx演示
您可以使用缩短它
^(?!.*?(.)'1{2})(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?='D*'d)(?=.*?['W_]).{8,20}$
即使用非字属性CCD_ 6而不是列出每个特殊字符。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Javascript中的正则表达式问题转义特殊字符
- Regex允许某些特殊字符-转义问题
- 转义引号问题
- Javascript:转义 RegExp 字符串中的字符问题
- 转义HTML标记.字符集编码可能出现的任何问题
- 问题与javascript,发布到facebook API,通过
,需要转义'和“ - 在Element中添加HTML可以减少转义问题
- 转义码输入的按键问题
- 为什么我不能正确地附加具有指定id的标签?是字符转义问题吗?
- JavaScript转义字符串问题
- 愚蠢的转义引号问题
- 转义firebase privateKey作为Heroku配置变量的问题
- 转义序列问题——无法打开页面
- javascript转义、encodeURI和encodeURIComponent的问题