【问题标题】:How to write conditional regular expressions in JavaScript?如何在 JavaScript 中编写条件正则表达式?
【发布时间】:2014-12-17 21:37:13
【问题描述】:

根据查找删除正则表达式。如何查找正则表达式?

【问题讨论】:

  • 一个正则表达式只做 match 事情,不返回任何字符串。你在做什么,你怎么删除字符?为什么需要正则表达式?你试过什么没用?
  • JavaScript 正则表达式总是返回新字符串。如果 x="ctrl+" 或 x="ctrl+F"以下正则表达式有效 y = x.replace(/\+(?! [a-zA-Z0-9])/g, "")
  • 返回字符串的不是正则表达式,而是replace 函数。似乎您想要积极的前瞻并删除空格,然后您的正则表达式应该可以工作 - 您想要删除 后跟字符的加号。

标签: javascript regex


【解决方案1】:

您可以使用lookahead

/\+(?!$)/

仅当 + 后跟其他字符(不是字符串的结尾)时才匹配。

我假设您知道如何从匹配正则表达式的字符串中删除字符。

【讨论】:

  • str = "ctrl+f2"; str.replace(/\+(?! [a-zA-Z0-9])/g, "");为什么这不起作用?
  • 因为表达式仅在+ 后跟[a-zA-Z0-9] 中的字符not 时匹配。 f[a-zA-Z0-9] 中。
【解决方案2】:

使用正则表达式Ctrl\+.+。如果匹配,则将出现的“+”替换为空字符串。

代码使用示例:

var str = "Ctrl+F2";
var match = str.match(/Ctrl\+.+/);
if (match) {
    str.replace("+", "");
}

【讨论】:

    【解决方案3】:

    一个简单的解决方案是从字符串中删除所有出现的“+”,除非它是最后一个字符。

    var text = "Ctrl+F2 + Ctrl+";
    var newText = text.substring(0,text.length-1).split('+').join('')+text[text.length-1];
    

    http://jsfiddle.net/JoeSham/vLns7Lfh/2/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      相关资源
      最近更新 更多