Javascript 正则表达式匹配部分单词,前面不带任何内容,但允许使用空格
我想在一个以行开头的字符串中匹配一些类名,但它不允许在匹配之前使用字符,除了空格 我已经使用了Javascript 正则表达式匹配部分单词,前面不带任何内容,但允许使用空格,javascript,regex,Javascript,Regex,我想在一个以行开头的字符串中匹配一些类名,但它不允许在匹配之前使用字符,除了空格 我已经使用了/row-/g和/\s?row-/g和单词边界,但是当用户可能使用带有foo借阅条的类名,其中row-in借阅返回匹配或某些row类时,问题就出现了 我正在测试的类名示例字符串: 行某类foobar你好世界行类foo借阅栏行它是 我只想匹配行某个类和行它是您可以使用单词边界围绕模式,\b: \b ?row-\b 还要注意,\s不仅仅是空格,它实际上是 [ \t\n\r\f\v] 因此,除非您确定输入
/row-/g
和/\s?row-/g
和单词边界,但是当用户可能使用带有foo借阅条的类名,其中row-in借阅返回匹配或某些row类
时,问题就出现了
我正在测试的类名示例字符串:
行某类foobar你好世界行类foo借阅栏行它是
我只想匹配
行某个类
和行它是
您可以使用单词边界围绕模式,\b
:
\b ?row-\b
还要注意,\s
不仅仅是空格,它实际上是
[ \t\n\r\f\v]
因此,除非您确定输入,否则最好是明确的,以避免意外结果
您可以尝试以下正则表达式:
(:?^|\s)row-
您可以将“row-”放在行的开头,也可以放在空白的前面,这样它才有效
(:? # Non-capturing group
^|\s # Matches tart of string/line or whitespace
)row-
您可以将.match()
与RegExp
/row-\w+/(?=\s |$)/g
一起使用,以匹配行-
,然后是单词,如果后跟空格字符或输入结尾,则后跟单词
console.log(
“行某类foobar你好世界行foo借来的酒吧行是”
.match(/row-\w+-\w+(?=\s |$)/g)
)
能否使用插入符号(^
)指定字符串的开头?像这样:/(?:^ |\s)行-/
或者可能是一个lookback/(?我不认为JS Regex中有look behind。@AnthonyStringer虽然我知道插入符号的用途,但我不确定它在我的情况下如何帮助匹配过程。无论是否有,我都在对所有实例进行全局查找。这是我问题的完美解决方案,甚至忽略了用户可以在其他名称中使用row in的情况作为一些行类。谢谢!这将马赫xyz行ab类也。这不是开始row@ShekharKhairnar不是根据我的测试哦,似乎我在我的答案中粘贴了错误的正则表达式。现在我看到我当前的正则表达式也与hello world row class相匹配…@Slayther请检查我上面的链接。即使我添加了hello world,它似乎也能正常工作d级