【问题标题】:JavaScript Regex Ignore CaseJavaScript 正则表达式忽略大小写
【发布时间】:2009-07-27 01:24:35
【问题描述】:

我正在尝试匹配字符串的一部分,它不应该区分大小写。我有以下代码,但我从来没有得到替换的字符串。

var name = 'Mohammad Azam'
var result = name.replace('/' + searchText + '/gi', "<b>" + searchText + "</b>");

searchText 变量将为“moha”或“mo”或“moh”。

我怎样才能在粗体标签中获得匹配的东西。

【问题讨论】:

  • 你想用什么替换searchText?文字字符串 'searchText' 还是别的什么?

标签: javascript regex


【解决方案1】:

/pattern/ 当它作为文字输入时有意义,而不是像这样构造字符串。 (我不是 100% 确定这一点。)

试试

var name = 'Mohammad Azam';
var searchText = 'moha';
var result = name.replace(new RegExp('(' + searchText + ')', 'gi'), "<b>$1</b>");
//result is <b>Moha</b>mmad Azam

编辑:

为上述代码添加了演示页面。

Demo →

Code

【讨论】:

  • 不必必须用括号构造正则表达式
  • 他想捕捉匹配并用 标签包围它。没有括号就无法捕获。
  • 是的,当搜索字符串与无周围标签的替换字符串相同时,您可以。
  • 所以,实际上我应该在执行这些 case 操作时将 Regex 对象发送到替换而不是字符串。非常感谢!
【解决方案2】:

我认为您正在寻找新的 RegExp,它创建一个动态正则表达式 - 您现在要做的是匹配一个字符串(而不是一个正则表达式对象):

var name = 'Mohammad Azam', searchText='moha';

var result = name.replace(new RegExp(searchText, 'gi'), "" + searchText + ""); result

编辑:实际上,这可能就是你要找的,没关系^

var name = 'Mohammad Azam', searchText='moha';
name.match( new RegExp( searchText , 'gi' ) )[0]
name // "Moha"

【讨论】:

  • 嘿,我把自己和你要找的东西弄糊涂了 - 如果有任何一种锻炼,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多