正则表达式匹配部分单词之前没有任何内容但允许空格

时间:2016-06-15 04:15:45

标签: javascript regex

我想匹配以 row - 开头的字符串中的某些类名,但除了空格外,它不能允许匹配前的字符。

我使用了/row-/g/\s?row-/g以及单词边界但是当用户可能使用带有foo-borrow-bar的类名时,问题出现了行 - 在借用中返回一个匹配或some-row-class

我正在测试的示例字符串字符串:

row-some-class foobar hello-world-row-class foo-borrow-bar row-it-is

我只想匹配row-some-classrow-it-is

3 个答案:

答案 0 :(得分:2)

你可以试试这个正则表达式:

(:?^|\s)row-

你可以在行的开头或空格的前面有“row-”,以使其有效。

(:? # Non-capturing group
    ^|\s # Matches tart of string/line or whitespace
)row-

答案 1 :(得分:0)

您可以使用字边界\b

包围图案
\b ?row-\b

另请注意,\s不仅仅是空格,实际上是

[ \t\n\r\f\v]

因此,除非您确定输入,否则最好明确避免意外结果。

Demo

答案 2 :(得分:0)

您可以.match()RegExp /row-\w+-\w+/(?=\s|$)/g匹配row-后跟单词后跟-后跟单词if后跟空格字符或结尾输入

console.log(
  "row-some-class foobar hello-world-row foo-borrow-bar row-it-is"
  .match(/row-\w+-\w+(?=\s|$)/g)
)