我尝试匹配字母数字组,可选择用短划线-
分隔。
例如,
ABC
ABC-DEF
123-DEF-ABC
但不是
-
-ABC
ABC-
我已经设法在\w+(\-?\w+)*
的后端(Java)中完成了这项工作,但效果不错,但似乎并没有转化为JS。我尝试了各种标志设置的许多排列,但无济于事。
我做错了什么?单元测试can be found here。设置粘性标志似乎通过了大多数测试,除了最后有破折号的测试。
谢谢
答案 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; }