【问题标题】:Regex help needed in javascriptjavascript中需要正则表达式帮助
【发布时间】:2009-01-16 21:19:11
【问题描述】:

这里的第一个问题,所以请友好:)

我对正则表达式知之甚少,但我在当前项目中使用了一个从字符串中去除特殊字符的正则表达式。看起来是这样的……

newWord = newWord.replace(/[^0-9A-Za-z ]/g, "");

效果很好,但我需要稍微修改一下,以免删除 £ (GBP) 字符。

我已经尝试了几件事,但从一开始就没有学习正则表达式,我只是在猜测,但没有一个有效。

谁能帮忙?

【问题讨论】:

标签: javascript regex


【解决方案1】:
newWord = newWord.replace(/[^0-9A-Za-z£ ]/g, "")

或使用 unicode 转义

newWord = newWord.replace(/[^0-9A-Za-z\u00a3\u0020]/g, "")

您对这个正则表达式所做的是删除不在您提供的列表中的任何字符。 minus 字符用于表示范围,因此任何不在 0-9 (0,1,2,3,..9) A-Z 和 a-z 中的字符都被替换为空 ("")。通过添加 £,它将不再替换它。

【讨论】:

  • Triptych 有一个很好的观点——在 ASCII 之外,字符集不提供任何保证。你最好使用\u00a3。
  • 我还建议对空格字符使用类似的转义序列以提高可读性,因为如果它是实际空格很容易忽略它(我第一次阅读问题时就这样做了)。跨度>
  • 确保数据和脚本都使用相同的编码进行编码。否则更换可能会出错。正如乔纳森指出的那样,您应该更好地使用 Unicode 语法。
【解决方案2】:
newWord = "10 -+-sdf£";
newWord = newWord.replace(/[^0-9A-Za-z £]/g, "");
WScript.StdOut.WriteLine(newWord);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多