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

Javascript Regex to validate single occurrence of special characters

我有一个字符串要使用javascript regex进行验证。字符串可以有任何不同的特殊字符的一次出现。我尝试了以下模式。

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

但它允许任何两个不同的特殊字符。但根据我的方案,它应该允许每个特殊字符一次出现(例如,可以接受一次出现"&;"和"%",但不允许出现两次出现"&;"或任何其他字符)。请帮忙。


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

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

网址:https://regex101.com/r/bw3ar1/5

1
2
3
4
5
6
7
8
9
10
11
12
var re = /^(?!.*([!$%^&*()_+|~=`{}\[\]:";'<>?,.\/-]).*\1)[!$%^&*()_+|~=`{}\[\]:";'<>?,.\/A-Za-z0-9-]+$/gm;
var str = 'abc12*$%
abcd12324'
;
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.
}


哎呀,这不对

不应该是这样的。您有一些相当复杂的东西,请尝试将regex简化为:

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

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

看看它是否仍然不起作用