我需要使用javascript正则表达式验证一个字符串。这个字符串只能有一个不同的特殊字符。我尝试了以下模式。
/^[A-Za-z0-9]*[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]?[A-Za-z0-9]*$/
但它允许任何两个不同的特殊字符。但是根据我的情况,它应该只允许每个特殊字符单次出现(例如,“&”和“%”单次出现是可以接受的,但是“&”或其他任何字符的两个出现都是不允许的)。请帮忙。
我需要使用javascript正则表达式验证一个字符串。这个字符串只能有一个不同的特殊字符。我尝试了以下模式。
/^[A-Za-z0-9]*[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]?[A-Za-z0-9]*$/
但它允许任何两个不同的特殊字符。但是根据我的情况,它应该只允许每个特殊字符单次出现(例如,“&”和“%”单次出现是可以接受的,但是“&”或其他任何字符的两个出现都是不允许的)。请帮忙。
^(?!.*([!$%^&*()_+|~=`{}\[\]:";'<>?,.\/-]).*\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.
}
哎呀,这是错的
这不应该是这样的。你的正则表达式比较复杂,试着简化为这样:
/^[A-Za-z0-9]*[\W_]?[A-Za-z0-9]*$/
(\W
包括所有特殊字符,除了 _
)
看看是否还不能工作。