Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式来验证特殊字符的单一出现_Javascript_Regex - Fatal编程技术网

Javascript正则表达式来验证特殊字符的单一出现

Javascript正则表达式来验证特殊字符的单一出现,javascript,regex,Javascript,Regex,我有一个字符串要使用javascript正则表达式进行验证。该字符串可以只出现一次任何不同的特殊字符。我尝试了以下模式 /^[A-Za-z0-9]*[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]?[A-Za-z0-9]*$/ /^[A-Za-z0-9]*[-!$%^&*()|+| ~=`{}\[\]:“;”?,.\/]?[A-Za-z0-9]*$/ 但是它允许任何两个不同的特殊字符。但是根据我的场景,它应该允许每一个特殊字符出现一次(例如,单次出现“

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

/^[A-Za-z0-9]*[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]?[A-Za-z0-9]*$/
/^[A-Za-z0-9]*[-!$%^&*()|+| ~=`{}\[\]:“;”?,.\/]?[A-Za-z0-9]*$/
但是它允许任何两个不同的特殊字符。但是根据我的场景,它应该允许每一个特殊字符出现一次(例如,单次出现“&”和“%”是可以接受的,但不允许两次出现“&”或任何其他字符)。请帮助。

这是错误的

不应该是这样。您有一些相当复杂的问题,因此请尝试将正则表达式简化为:

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

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


看看它是否仍然不起作用

这个正则表达式模式只允许一个特殊字符,看看是否可以使用一个模式来验证它。从字符串中获取所有匹配的特殊字符并手动查找重复字符将很困难。即使我不确定该方法,我也没有尝试过。哦,我错了解释你刚才说的。VKS有正确的答案。谢谢你的回答。但是这会给出与我的第一个模式相同的结果,并且字符串中不允许有两个不同的特殊字符。你能建议我一个模式来验证我的场景吗。字符串中有任何字符,但只有一个出现。工作很好。非常感谢你的t他帮助我。
^(?!.*([!$%^&*()_+|~=`{}\[\]:";'<>?,.\/-]).*\1)[!$%^&*()_+|~=`{}\[\]:";'<>?,.\/A-Za-z0-9-]+$
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.
}