【问题标题】:Javascript Replace by Regex用正则表达式替换 Javascript
【发布时间】:2014-01-26 05:36:21
【问题描述】:

我正在使用 RegExp 来制作 slug。我是说替换所有字符与这样的模式不匹配:

str = str.replace(new RegExp('[^a-z0-9-]','g'), '');

它有效,但我需要询问它是否是正确的方式/语法/方法?

感谢任何提示。

【问题讨论】:

  • 你可以这样做,或者str = str.replace(/[^a-z0-9-]/g), '');
  • 最后一个连字符也错了——'*&%^$--kjhkhkjh'.replace(/[^a-z0-9]/g, '');
  • @epoch 最后一个连字符是错的?
  • 连字符是字符类中的特殊字符,应该转义。

标签: javascript regex slug


【解决方案1】:

1) 你可以写

new RegExp('[^a-z0-9-]','g')

作为

/[^a-z0-9-]/g

你写的正则表达式代表如下:

2) [] 中的任何内容都表示任何字符不是序列,但是当 [^] 开头出现抑扬符时表示 NOT在

3)a-z代表从a到z的所有字符(小写字母)

4) 0-9 表示 0 到 9 以及末尾的连字符 (-)...以及连字符。

因此,您想保留哪些字符?如果您只想保留字母数字,请使用<b>/[^A-Za-z0-9]/g</b>(这是区分大小写的版本)或<b>/[^a-z0-9]/gi</b> 不区分大小写

修饰符/标志:<b>g</b> = 全局,<b>i</b>= 不区分大小写

看的好地方:Mozilla MDN RegExp

【讨论】:

  • 虽然这基本上是一个很好的答案,但您可能需要考虑更好的格式,例如使用更多的代码块(除其他外),以​​提高可读性,从而使其成为更好的答案。 :-)
  • @BastiM 感谢您的建议。希望这种格式有帮助。老实说,我还没有探索过格式化选项,我不知道除了在新行上添加四个字符缩进的代码之外还能做什么。
  • 现在看起来好多了 :) 随着时间的推移,你会探索所有这些格式化的东西,你会习惯它们。
  • @YahyaE 只需在第一个位置添加另一个 character class (您可能需要阅读 :) ),只允许字符。
  • @YahyaE 这应该可以解决问题:src = src.replace(new RegExp("[^a-z0-9-]*","gi"), "").replace(new RegExp("[^a-z]?([a-z0-9-])","i"),"$1");
猜你喜欢
  • 2010-11-12
  • 2016-09-23
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多