我有要验证的输入字符串。 我可能在“abc 123”和“abcd 123”之间有一些分隔符,即可能的情况:
str = "abc-123 abcd 123";
str = "abc/123 abcd 123";
str = "abc&&123 abcd 123";
str = "abc:123 abcd 123";
str = "abc.123 abcd 123";
etc.....
基本上我想将所有这些字符串视为有效的输入输出字符串
我的正则表达式:
var m = value.match(/([a-z]+\s*\d+)\s+([a-z]+\s*\d+|\d+\s*[a-z]+)/i);
if (m) {return "valid string"}
else {return "invalid string"}
目前,我的正则表达式对于上面列出的情况抛出“无效字符串”(空格除外)
( str= "User 123")//返回有效字符串
如何在正则表达式中添加条件来将上述所有场景评估为 true?
function testIt(value) {
var m = value.match(/([a-z]+\s*\d+)\s+([a-z]+\s*\d+|\d+\s*[a-z]+)/i);
if (m) {return "valid string"}
else {return "invalid string"}
}
console.log(testIt("abc-123 abcd 123"));
console.log(testIt("abc/123 abcd 123"));
console.log(testIt("abc&&123 abcd 123"));
console.log(testIt("abc:123 abcd 123"));
console.log(testIt("abc.123 abcd 123"));
最佳答案
将所有可能的字符放入 [a-z]+
和 \d+
之间的字符集中:
([a-z]+[\s\/&:.-]*\d+)\s+([a-z]+\s*\d+|\d+\s*[a-z]+)
^^^^^^^^^^^
https://regex101.com/r/HJg1cE/1
或者,重复任何非数字字符,直到到达数字字符(如果确实允许任何非数字字符):
([a-z]+\D*\d+)\s+([a-z]+\s*\d+|\d+\s*[a-z]+)
^^^
关于javascript - 如何在正则表达式中接受分隔符(: , .,/, ?, =, +, -, _,)以匹配字符串值Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55989251/