Javascript单词边界unicode空间问题
Javascript word boundary unicode space issue
我想写一个正则表达式模式,它可以匹配完整的单词或短语,即使它们有unicode字符来用一些html代码包装它们。所以我使用这个模式:
var pattern=new RegExp('(^|''s)'+phrase+'(?=''s|$)', "gi");
它甚至可以完美地处理一个问题所需的多词短语。如果短语不是字符串的开头,它将与单词前面的空格匹配。所以在我把它包起来之后,我会失去那个空间。我只想包装短语变量,而不是空格。
例如:
var string="This is a nice sentence.";
var phrase="is a nice";
/*OUTPUT: Thisis a nicesentence*//*HTML OUTPUT: This<span>is a nice</span>sentence*/
/*What I want: This <span>is a nice</span> sentence*/
当然,这种模式可以工作:
var pattern=new RegExp(phrase, "gi");
但我不是在寻找那些是另一个的子字符串的字符串。
有可能用一个更好的正则表达式模式来解决我的问题吗?
只需写回您在第1组中捕获的内容:
output = string.replace(pattern, '$1<span>' + phrase + '</span>');
如果不是使用replace
而是使用match
或exec
,并且手动进行替换,则仍然可以访问返回数组中的捕获组,并在span
之前插入空格或空字符串。
顺便说一句,如果你也捕获了这个短语,那么在替换中不需要任何字符串连接:
var pattern = new RegExp('(^|''s)('+phrase+')(?=''s|$)', "gi");
output = string.replace(pattern, '$1<span>$2</span>');
相关文章:
- 在方形空间 (YUI) 上重绘元素时出现问题
- jQuery 函数的全局命名空间问题
- 谷歌关闭库中的命名空间问题
- 调用命名空间的公共函数(coffeescript)时出现问题
- socket.io + Sencha 中的 JavaScript 命名空间问题
- 聚合物,访问自定义元素/命名空间问题
- Javascript 命名空间在从函数返回数组时出现问题
- 从一个.js文件中调用另一个.js文件中的函数时出现命名空间问题
- jQuery - 方法链的插件和命名空间问题
- socket.io-使用命名空间时出现套接字变量问题
- JavaScript中的命名空间技术在JSLint中存在问题
- 日期选择器日期空间问题
- Javascript单词边界unicode空间问题
- javascript 中的命名空间问题
- PHP mySQL 变量不匹配和空间问题
- Javascript命名空间问题,我如何在这个函数调用中获得这个值
- CoffeeScript -空间问题
- Javascript中的命名空间问题
- EXT JS 4.2生成工作空间问题
- JSDoc 3命名空间问题