【发布时间】:2012-12-16 18:23:37
【问题描述】:
文本:
id="word1 word2 word3/343/els/425/word4 word5 word6"
wordA wordB Bword2B word1 word2 word3
blah blah blah
我正在尝试匹配整个单词:文本中的 word1、word2、word3 但我不希望它们在文本的 id="word1 word2 word3/343/els/425/word4 word5 word6" 行中匹配,这些词不是拉丁文。
目前的做法:
var sWord = "word2";
text = text.replace( new RegExp(sWord+"(?!\/[0-9])", "gi"), "<span style='background-color: yellow'>"+sWord+"</span>");
这种方法只适用于 word3,不适用于 word1 或 word2,那么我如何在正则表达式中引入 NUMBER 之前还有另一个词的可能性?
"(?!.\/[0-9])"
我添加了点“。”到正则表达式。但它似乎不起作用。
另外,如何添加全词匹配的可能性? \b 和 \S 似乎不起作用,因为单词不是拉丁语。
提前谢谢你!
编辑: jsfiddlehttp://jsfiddle.net/GLt4F/5/
您可以看到 word1 和 word2 的按钮中断,但 word3 的按钮中断,因为匹配正确
EDIT2:
重新表述问题:仅匹配 AAA 如果后面没有 BBB,并且它们之间可以是任何东西。例如:
AAA frefe BBB 不应该匹配
AAA BBB 不应该匹配
AAA frefe cc 应该匹配
【问题讨论】:
-
任何机会我们都可以得到一个 jsfiddle,我们可以用它来测试可能的解决方案:)
-
不确定其他人,但我无法理解您要达到的目标。 “我不希望它们在“id = blahblah”中匹配”是什么意思。 word1 永远不会匹配 blahblah。需要更好的解释
-
为什么不在模式匹配之前去掉
id="..."? -
@VladL 文本在显示之前是 HTML。所以我想在 html 中突出显示 word2,但我不想在 id="word1 etc." 中更改它。因为它会破坏 javascript 功能。 blahblah 是我发布的整行的缩写。
-
你的意思是这样的吗? jsfiddle.net/PBu7S
标签: javascript regex