【发布时间】:2010-04-29 18:14:50
【问题描述】:
有什么方法可以找出哪个输入字符不符合正则表达式模式。
例如:考虑 [A-Za-z\s.&] 只是允许的,但用户输入像“测试/字符串”,其中“/”使输入无效。 如何找到失败的正则表达式(我们的案例'/')
【问题讨论】:
-
所有答案都很好。 RoToRa 完全符合我的需要。谢谢你
标签: javascript regex
有什么方法可以找出哪个输入字符不符合正则表达式模式。
例如:考虑 [A-Za-z\s.&] 只是允许的,但用户输入像“测试/字符串”,其中“/”使输入无效。 如何找到失败的正则表达式(我们的案例'/')
【问题讨论】:
标签: javascript regex
您可以删除有效字符,您将得到一串无效字符:
var invalid = "test/string".replace(/[A-Za-z\s.&]/g,""); // results in "/"
【讨论】:
只需否定你的字符类并找出匹配的字符。
[^A-Za-z\s.&]
将匹配test/string 中的/。所以,你得到了
if (/^[A-Za-z\s.&]+$/.test(subject)) {
// Successful match
} else {
result = subject.match(/[^A-Za-z\s.&]/g);
// result is an array that contains all the characters that failed the match
}
【讨论】:
要查找哪些字符失败,用/[A-Za-z\s.&]+/拆分,会得到无效字符列表
"test/string".split(/[A-Za-z\s.&]+/).join('')
/
要检查用户名是否有效,您可以使用 ^ 和 $ 锚。
/^[A-Za-z\s.&]+$/
【讨论】: