正则表达式,包括单词搜索中的前导空格

时间:2013-08-29 18:45:50

标签: javascript regex

我有以下正则表达式:

((^|[^a-zA-ZäöåüßÄÖÅÜ])'+targetword+'(?![a-zA-ZäöåüßÄÖÅÜ]))(?![^<]*(?:<\/script|>))

我正在使用它来查找targetword并从中创建一个链接,但仅当该单词不是另一个单词的一部分时才会使用。

编辑:正则表达式用于JavaScript中的RegExp对象。

换句话说,'the'会被关联,但不会o'the'r'the'apy

问题是上面的表达式还包括链接中的前导空格。因此,'the'在链接文字中变为' the'

我找到了一些解决方案来查找和排除此站点中的前导空格,但我还没有找到一种方法将它们嵌入到上面的表达式中,因为正则表达式确实不是我的强项。

3 个答案:

答案 0 :(得分:1)

基本上你只需要将空格定义为不属于你的匹配组:

(?:(?:^|[^a-zA-ZäöåüßÄÖÅÜ])\s*(targetword)(?![a-zA-ZäöåüßÄÖÅÜ]))(?![^<]*(?:<\/script|>))

应该诀窍(注意MATCHED,但在targetword前面排除了空格) 当然,用你的变量替换targetword。

答案 1 :(得分:1)

这个正则表达式与您正在寻找的不完全相同,但它可能会更好。

"\b" + targetword + "\b"

\ b表示单词应该是独立的。 这还包括符号,空格和数字。

如果这不是您想要的,请为您带来的不便表示歉意。

答案 2 :(得分:0)

您可以使用"\b" + targetword + "\b"这适用于大多数情况,但这会匹配单词donald和字符串O'Donald或匹配Sarah字符串{ {1}}。

我会使用外观并展望未来验证

  • 前面的字符是空格,字符串的开头或可接受的标点符号
  • 尾随字符是空格,字符串结尾或可接受的标点符号

这些允许的字符可以根据您的实际用例进行调整。

Sarah's car is broken

enter image description here

"(?<=[\s",.]|^)" + targetword + "(?=[\s",.\r\n]|$)"