如何测试只包含字母字符和短划线的字符串( - )[javascript]

时间:2016-04-14 13:20:06

标签: javascript jquery regex

我需要为只包含字母字符和短划线符号( - )的单词创建一个正则表达式。它不能连续重复(例如 - )。这是我的正则表达式函数:

var regex = new RegExp(/(\w*\-{0,1})*/);

此功能应适用于:home-do g或类似home-dog-bird之类的词,但不适用于home--dog之类的词。我该怎么测试呢?

7 个答案:

答案 0 :(得分:3)

你可以使用负向前看来做到这一点。

var regex=new RegExp(/^(\w|-(?!-))+$/);

这样做的目的是匹配仅包含字母数字字符的内容和-只有在没有其他-后才会出现的情况。

有关javascript正则表达式可能的更多详细信息,请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions

答案 1 :(得分:0)

如果您反过来思考(向后而不是向前),您可以创建一个正则表达式,断言每个匹配以一个或多个单词字符开头,后跟零个或多个单个短划线,单词对< / p>

https://regex101.com/r/xT7aT5/2

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

不确定这是否是最佳方法。我喜欢Py。的最佳回答。

答案 2 :(得分:0)

另一个没有前瞻的人:

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

答案 3 :(得分:0)

另一个解决方案,为单个短划线和单词寻找单词和可选。

function match(s) {
    return !!s.match(/^\w+(\-\w+)*$/g);
}

document.write(match('dog') + '<br>');
document.write(match('dog-cat') + '<br>');
document.write(match('dog-cat-fish') + '<br>');
document.write(match('dog-cat--fish') + '<br>');

答案 4 :(得分:0)

你也可以试试这个:

var regex = new RegExp(/^(\w*(\-\w)\w*)*$/);

答案 5 :(得分:0)

这将匹配文本正文。

/\w+(-\w+)+/

https://regex101.com/r/hU0xH7/1

答案 6 :(得分:-1)

试试这个正则表达式 /^([^-]*-{0,1}[^-]*)$/