我有以下RegExp:
^--([\w|-]+)我想要匹配的
--word
--no-word但不是:
---word
----word发布于 2018-04-21 09:33:54
将表达式更改为
^--(\w[-\w]*)这要求两个短划线后至少有一个单词字符,请参见。
请注意,character类本身已经形成了一个替代,所以除非您还想在字符串中的某处允许|,否则不需要在类中使用它。
发布于 2018-04-21 20:30:39
解决方案
会有所帮助,但是您也应该删除|,因为[...]中的这个符号不是一个交替运算符,而是一个常规的管道符号:
^--\b([\w-]+)演示
请参阅regex demo。
详细信息
^ - start of a string-- - two chars chars\b -需要紧跟在--([\w-]+)后面的- word boundary - Capturing group 1:一个或多个(由于+限定符)单词char或-符号(因为[\w-]是与方括号内定义的任何字符/字符类别匹配的character class )。演示
var strs = ["--word", "--no-word", "---word", "----word"];
var rx = /^--\b([\w-]+)/;
for (var s of strs) {
console.log(s, "=>", rx.test(s));
}
发布于 2018-04-21 09:35:32
这在这里有效,我正在检查两个单词字符子句之间的连字符选项。
^--(\w+[-]?\w+)https://stackoverflow.com/questions/49951538
复制相似问题