修复一个regExp

时间:2018-02-08 23:54:29

标签: regex

我找到了regExp

            var pattern:RegExp = new RegExp("\(\?\<\=\\s)" + string + "(?=[\\s|\,])", "ig");  
有人在2011年写了回来。

我想在我的代码中使用它,以便在给定的文本中找到单词字符串。它必须是一个完整的词。 问题是,只有当它不在文本的开头并且它不在文本的末尾时才会找到“字符串”。 我该怎么做才能找到文本的第一行和最后一行(第一个单词之前没有空格,最后一个单词后面没有空格或标点符号。

2 个答案:

答案 0 :(得分:2)

要匹配整个单词,您需要在任一端匹配单词边界。 ActionScript正则表达式在字符串的开头和结尾处也匹配为边界。

var pattern:RegExp = new RegExp("\\b" + string + "\\b", "ig");

请注意,string可以包含正则表达式元字符,您应该quoting

答案 1 :(得分:0)

?=是positive lookahead。它说你的文字后面必须跟括号内容(所以搜索到的文字不能是最后一个单词)。

要进行替换,可以使用以下正则表达式:

(?<=(^|\s))text(?=([\s,]|$))

请务必添加&#39; \&#39;当你将它添加到你的RegExp字符串时(以你在问题中粘贴的RegExp为例)。

您可以在javascript控制台上试用它(它仅适用于Chrome,其他浏览器不支持后置):

"text ciao text texttext a, a".replace(/(?<=(^|\s))text(?=([\s,]|$))/ig,"x")

按预期返回&#34; x ciao x texttext x,x&#34;(不替换texttext,因为它不是搜索到的单词)。