【问题标题】:What is the best way to ignore whitespaces and different cases in regex in javascript在javascript中忽略正则表达式中的空格和不同情况的最佳方法是什么
【发布时间】:2016-04-09 04:48:08
【问题描述】:

我正在使用正则表达式来查找某个字符串在另一个字符串中的所有出现,同时忽略任何空格和不同的情况。

以下是我当前的代码:

var str = word.substring(0,1)+"\\s*";
for (var i = 1; i < word.length - 1; i++) str = str + word.substring(i,i+1)+"\\s*";
str = str + word.substring(word.length - 1,word.length);
var regEx = new RegExp(str, "gi");

例如var word = "foobar":

var word = "foobar";
var str = word.substring(0,1)+"\\s*"; // declares the string as "f\\s*"
for (var i = 1; i < word.length - 1; i++) str = str + word.substring(i,i+1)+"\\s*"; // will add every character together with \\s* to 'str' like this: "f\\s*o\\s*o\\s*b\\s*a\\s*"
str = str + word.substring(word.length - 1,word.length); // will add the last character without \\s* like this: "f\\s*o\\s*o\\s*b\\s*a\\s*r"
var regEx = new RegExp(str, "gi"); // outputs /f\s*o\s*o\s*b\s*a\s*r/gi

这行得通,但感觉不是解决问题的最佳方法。如果有人对此有更漂亮的解决方案,我将不胜感激。

【问题讨论】:

  • 你能举个例子,更容易理解吗?
  • 请向我们展示输入和预期输出,因为您的代码本身很难理解
  • 您可以访问stackoverflow.com/questions/24395542/regex-ignore-case 忽略大小写。您似乎也在使用 \s 元数据,因此可以处理各种空白。
  • 不要创建包含空格的正则表达式,而是考虑从目标字符串中删除空格,然后在其中找到所需的字符串。
  • 如果您希望改进已经工作的代码,请访问 SE.CodeReview

标签: javascript regex


【解决方案1】:

您可以使用splitjoin 来简化:

var word = "foobar";
var regex = new RegExp(word.split('').join('\\s*'), 'gi');
//=> /f\s*o\s*o\s*b\s*a\s*r/gi

【讨论】:

  • 这正是我正在寻找的解决方案! +1
猜你喜欢
  • 2021-09-13
  • 2020-08-06
  • 1970-01-01
  • 2011-08-12
  • 2016-05-18
  • 2018-11-23
  • 2019-05-14
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多