【问题标题】:Replace Pipe and Comma with Regex in Javascript用 Javascript 中的正则表达式替换管道和逗号
【发布时间】:2011-10-17 15:08:44
【问题描述】:

我坐在这儿,手里拿着“好的部分”,但我仍然没有更聪明。

任何人都可以为我敲出一个正则表达式,让我可以替换任何“|”实例和 "," 来自一个字符串。

另外,任何人都可以指出一个非常好的学习正则表达式资源的方向,尤其是在 javascript 中(它们是一种特殊的风格吗??)这确实是我知识的一个弱点。

干杯。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    str.replace(/(\||,)/g, "replaceWith") 不要忘记末尾的g,这样它会全局搜索字符串,如果你不放它,正则表达式只会替换字符的第一个实例。

    意思是替换|(你需要转义这个字符)或(|,

    Nice Cheatsheet here

    【讨论】:

    • /[|,]/g,因为它只是一个字符。
    • @locrizak: 干杯有效....也感谢资源链接。 Pointy:是的,我也看到你的作品。两者有什么区别?
    • @James South:[xyz] 定义了一组字符,相当于(x|y|z),但没有分组表达式。
    【解决方案2】:

    如果您真的想了解正则表达式(以及大多数实现/风格的特殊警告或怪癖),我发现的最佳资源是 Regular-Expressions.info

    如果你真的喜欢正则表达式,我会推荐名为 RegexBuddy 的产品,用于测试和调试各种语言的正则表达式(尽管它完全支持一些东西,它总体来说还不错)

    编辑:

    最好的方法(我认为,尤其是考虑到可读性)是使用字符类而不是交替(即:[] 而不是 |

    使用:

    var newString = str.replace(/[|,]/g, ";");
    

    这会将|, 替换为分号

    字符类本质上意味着“匹配这些方括号内的任何内容”——只有少数例外。

    • 首先,您可以指定字符范围([a-zA-Z] 表示从az 或从AZ 的任何字母)。
    • 其次,在字符类的开头放置一个插入符号 (^) 否定 - 它表示此字符类中的任何内容 ([^0-9] 表示任何不是从09 的字符。
    • 将破折号放在字符类的开头,将插入符号放在字符类的末尾,以按字面意思匹配这些字符,或者如果您愿意,可以使用 \ 将它们转义到类中的任何其他位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      相关资源
      最近更新 更多