繁体   English   中英

Javascript Regex验证单个特殊字符的出现

[英]Javascript Regex to validate single occurrence of special characters

我有一个字符串来验证使用javascript Regex。 该字符串可以单独出现任何不同的特殊字符。 我尝试了以下模式。

/^[A-Za-z0-9]*[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]?[A-Za-z0-9]*$/

但它允许任何两个不同的特殊字符。 但根据我的情况,它应该允许每个特殊字符单次使用(例如,单个出现的'&'和'%'是可以接受的,但是不允许出现两次'&'或任何其他字符。 请帮忙。

哎呀这是错的

情况应该不是这样。 你有一些相当复杂的东西,所以尝试简化你的正则表达式:

/^[A-Za-z0-9]*[\\W_]?[A-Za-z0-9]*$/

\\W包括除_之外的所有特殊字符)

看看它是否仍然无法正常工作

^(?!.*([!$%^&*()_+|~=`{}\[\]:";'<>?,.\/-]).*\1)[!$%^&*()_+|~=`{}\[\]:";'<>?,.\/A-Za-z0-9-]+$

试试这个。这将允许special characters 0 or more但两次不会有相同的特殊字符。参见演示。

https://regex101.com/r/bW3aR1/5

var re = /^(?!.*([!$%^&*()_+|~=`{}\[\]:";'<>?,.\/-]).*\1)[!$%^&*()_+|~=`{}\[\]:";'<>?,.\/A-Za-z0-9-]+$/gm;
var str = 'abc12*$%\nabcd12324';
var m;

while ((m = re.exec(str)) != null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM