javascript - 如何在正则表达式中接受分隔符(: , .,/, ?, =, +, -, _,)以匹配字符串值Javascript

标签 javascript

我有要验证的输入字符串。 我可能在“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/

相关文章:

javascript - 网络 map 上的弹出窗口

javascript - 为什么当我使用退格键或后退按钮时我的页面会跳回到顶部

javascript - 基于 ng-class 中的插值添加多个三元运算和条件

javascript - 以编程方式监听 html 输入更改

javascript - 两个选项卡如何在浏览器内通信?

javascript - 在异步调用之前在 Javascript 中保存 'this'

javascript - 日期格式的更改

javascript - 面向对象的 JavaScript 错误

javascript - 如何在单击时分别为每个元素设置动画?

javascript - react : Toggle function in child component not working as expected