javascript正则表达式将不带模式的单词与中间的文本进行匹配
javascript regex match word not followed by pattern with text inbetween
text:
id="word1 word2 word3/343/els/425/word4 word5 word6"
wordA wordB Bword2B word1 word2 word3
blah blah blah
我正在尝试匹配文本中的所有单词:单词1、单词2、单词3,但我不希望它们在文本的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/
正如你所看到的,单词1和单词2的按钮断开了,但单词3没有,因为匹配是正确的
第2版:
重新表述问题:只有在没有BBB的情况下才匹配AAA,它们之间可以是任何东西。例如:
AAA频率BBB不应匹配
AAA BBB不应匹配
AAA frefe cc应匹配
/AAA(['s'S](?!=BBB))*$/
应该这样做。
另外,我如何添加全词匹配的可能性?''b和''S似乎不起作用,因为单词不是拉丁语。
JavaScript没有unicode兼容模式,所以你必须为单词char编写自己的字符集,并使用负匹配,所以
(?:^|[^A-Za-z0-9_$])
在AAA之前,并且JS中没有后备,所以之前的非单词字符将是捕获的组0的一部分。
(?!(.*)'/[0-9])
这似乎起到了作用(在两者之间时不匹配。不知道是否存在漏洞或是否是可靠的答案。
相关文章:
- 如何使用JS在中间输入文本中动态插入字符
- 在每个条形图的中间添加文本标签&鼠标悬停事件
- 在输入文本框的文本中间插入键盘字符值
- Beautifulsoup抓取数据,其中有js文本在中间
- 时刻.js以日期中间格式包含文本
- createElement-选择穿插在文本中间的框
- 如何使用 Javascript 从字符串中间提取然后重新格式化文本
- JavaScript 替换第一个/最后一个字母并将中间文本括在标签中
- 在按键事件上对齐页面中间的文本框
- 如何在焦点上垂直设置文本区域/输入中间的默认光标插入符号
- 计算圆心以在中间对齐文本
- 拆分文本节点在中间
- 始终将插入符号保持在文本区域的垂直中间
- 如何在两个不断变化的字符串之间选择中间文本
- CSS / Javascript微调器对齐文本中间
- 如何查找html元素是否应用了换行,并且该单词在文本中间断开
- asp.net使用jquery和javascript来确定与按钮匹配的文本框ID的中间部分
- jQuery Mobile:尝试在某些文本中间显示一个图标
- 如何在文本中间显示文本溢出省略号
- 如何在文本中间显示额外的跨度