匹配重复的字符组

时间:2017-01-10 14:12:31

标签: javascript regex

我尝试匹配字母数字组,可选择用短划线-分隔。

例如,

  • ABC
  • ABC-DEF
  • 123-DEF-ABC

但不是

  • -
  • -ABC
  • ABC-

我已经设法在\w+(\-?\w+)*的后端(Java)中完成了这项工作,但效果不错,但似乎并没有转化为JS。我尝试了各种标志设置的许多排列,但无济于事。

我做错了什么?单元测试can be found here。设置粘性标志似乎通过了大多数测试,除了最后有破折号的测试。

谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用

/^\w+(-\w+)*$/g

匹配字符串的开头和结尾,对于它。

var strings = ['ABC', 'ABC-DEF', '123-DEF-ABC', '-', '-ABC', 'ABC-'];

strings.forEach(function (a) {
    console.log(a.match(/^\w+(-\w+)*$/g));
    // with g                         ^
});

strings.forEach(function (a) {
    console.log(a.match(/^\w+(-\w+)*$/));
    // without g                      ^
});
.as-console-wrapper { max-height: 100% !important; top: 0; }