首页 > 正则表达式怎么匹配`-,-,9,-,-`?

正则表达式怎么匹配`-,-,9,-,-`?

验证数据合法性,数据需要符合以下规则:

  1. 逗号分隔
  2. 只有一个数字(一位),其余的都是短横杠-

示例:

-,-,9,-,-
9,-,-,-,-
-,-,-,-,9

用正则怎么匹配啊?需要用到正则中的哪些概念?全都看有点晕

解决

这个是我在stackoverflow上的提问:

How can I match this string '-,-,-,9,-'?

确实比较麻烦,如果单从正则角度来匹配有些不太适合

从其他角度解决应该会好一些~

谢谢大家~


我觉得以逗号split之后,遍历结果检查会更好一点。


我写的这个,你上面举例的都能测试通过的。

/(?:[\-\d],)+[\-\d]/

更简洁的:

/([\-\d],)+[\-\d]/

UPDATE:
要求是只能是一位数字:
所以这个或许会好一点:

/^(\-,)*\d(,\-)*$/

给出的测试案例:

/^(\-,)*\d(,\-)*$/.test("-,-,-,-,9"); //true
/^(\-,)*\d(,\-)*$/.test("9,-,-,-,-"); //true
/^(\-,)*\d(,\-)*$/.test("-,-,9,-,-"); //true

/^(\-,)*\d(,\-)*$/.test("-,-,9,-,-,9"); //false
/^(\-,)*\d(,\-)*$/.test("-,-,9,9,-,-"); //false
/^(\-,)*\d(,\-)*$/.test("99,-,-,-,-");  //false
/^(\-,)*\d(,\-)*$/.test("9,9,-,-,-");   //false

分开做? 先匹配 \d, 再匹配 -


思路:
1. 先将数字转换为 -
2. 匹配字符串 -,

javascriptvar str = '-,-,9,-,-';
// var str = '9,-,-,-,-,-';
// var str = '-,-,-,-,-,9';
// var str = '-,-,-,1,-,9';

/^(-,)*-$/.test(str.replace(/\d/, '-'));

([0-9],-,-,-,-)|(-,[0-9],-,-,-)|(-,-,[0-9],-,-)|(-,-,-,[0-9],-)|(-,-,-,-,[0-9])

【热门文章】
【热门文章】