如果在javascript .replace中使用,如何在RegEx中定位破折号或连字符?

ixcode

我正在尝试使用RegEx定位破折号或连字符。尽管我如何使用它似乎是不可能的。我在网上找到的其他答案似乎与我的情况不符。

场景:

如果我单击一个按钮,应该发生的情况是该脚本将替换指定的数字+字母。一切正常,直到现在我要在列表中加入连字符。

请查看下面使用的RegEx,下面是代码:

const mapper = new Map();
mapper.set("10th", "11th");
mapper.set("-", "Deleted");
mapper.set("63", "Deleted");
mapper.set("63-5", "Deleted");
mapper.set("121AA", "95");

function fixtext() {
  const elm = document.getElementById("textarea1");
  if (elm) {
    elm.value = elm.value
      .replace(
        /\b\d+(?:A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|AA|BB|CC|DD|EE|FF|GG|HH|II|JJ|KK|LL|MM|NN|OO|PP|QQ|RR|SS|TT|UU|VV|WW|XX|YY|ZZ|d|th|st|nd)?\b/g,
        m => mapper.has(m) ? mapper.get(m) : m
      );
  }
}
<textarea id="textarea1" rows="4" cols="50">(10th ed), Pretrial Proceedings sample 121AA and - and 63 63-5</textarea>

<button class="nbtngreen" onclick="fixtext()">Update</button>

对于63-5,应将其整体更改,而不应更改为Deleted-5

我尝试使用网上看到的多个RegEx逃避连字符或使其匹配。以下是其中一些:[]-] [a-zA-Z0-9!$* \t\r\n\-] [-] [abc-]

这些都不适合我,或者我不知道这次如何使它起作用。

我也很想缩短RegEx,但这也是问题所在。[A-z]或类似的东西不能正常工作。

我非常感谢您提供有关如何解决此问题的帮助。提前致谢!

菲尔·许

const mapper = new Map();
mapper.set("10th", "11th");
mapper.set("-", "Deleted");
mapper.set("63", "Deleted");
mapper.set("63-5", "Deleted");
mapper.set("121AA", "95");

function fixtext() {
  const elm = document.getElementById("textarea1");
  if (elm) {
    elm.value = elm.value
      .replace(
        /\b\d+(?:[A-Z]|([A-Z])\1|d|th|st|nd)?(|\-\d)?\b/g,
        m => mapper.has(m) ? mapper.get(m) : m
      );
  }
}
<textarea id="textarea1" rows="4" cols="50">(10th ed), Pretrial Proceedings sample 121AA and - and 63 63-5</textarea>

<button class="nbtngreen" onclick="fixtext()">Update</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章