【问题标题】:Javascript split regex questionJavascript拆分正则表达式问题
【发布时间】:2011-04-03 08:36:51
【问题描述】:

你好,我正在尝试我认为在 Javascript 中相当简单的正则表达式,但给我带来了很多麻烦。 我希望能够通过 '-'、'.'、'/' 和 ' ' 的 javascript 拆分来拆分日期。

var date = "02-25-2010";
var myregexp2 = new RegExp("-."); 
dateArray = date.split(myregexp2);

什么是正确的正则表达式,任何和所有的帮助都会很棒。

【问题讨论】:

    标签: javascript regex split


    【解决方案1】:

    您需要将要拆分的字符放在character class 中,这会告诉正则表达式引擎“这些字符中的任何一个都是匹配的”。出于您的目的,这看起来像:

    date.split(/[.,\/ -]/)
    

    虽然破折号在字符类中作为范围说明符具有特殊含义(即[a-z] 的含义与[abcdefghijklmnopqrstuvwxyz] 相同),但如果将其作为类中的最后一件事,它会被视为文字破折号并且确实不需要转义。

    为了解释为什么您的模式不起作用,/-./ 告诉正则表达式引擎匹配文字短划线字符后跟任何字符(dots 是正则表达式中的通配符)。对于“02-25-2010”,每次遇到“-2”时都会拆分,因为破折号匹配,点匹配“2”。

    【讨论】:

    • 您还可以提到点 doesn't 在字符类中具有任何特殊含义 - 而不是充当通配符(这没有任何意义),它充当文字。
    【解决方案2】:

    或者只是(除了数字之外的任何东西):

    date.split(/\D/);
    

    【讨论】:

      【解决方案3】:

      你可以使用

      date.split(/-/);
      

      date.split('-');
      

      【讨论】:

      • 在您的代码前添加一个换行符,4 个空格将正确格式化。
      【解决方案4】:

      然后将其拆分为除数字以外的任何内容:

      date.split(/[^0-9]/);
      

      【讨论】:

        【解决方案5】:

        假设你的字符串是:

        let str = `word1
        word2;word3,word4,word5;word7
        word8,word9;word10`;
        

        您想通过以下分隔符分割字符串:

        • 冒号
        • 分号
        • 新行

        你可以这样分割字符串:

        let rawElements = str.split(new RegExp('[,;\n]', 'g'));
        

        最后,你可能需要修剪数组中的元素:

        let elements = rawElements.map(element => element.trim());
        

        【讨论】:

        • 为什么是 g 标志?
        【解决方案6】:

        或仅用于日期字符串 2015-05-20 或 2015.05.20

        date.split(/\.|-/);
        

        【讨论】:

          【解决方案7】:

          试试这个

          date.split(/\W+/)

          【讨论】:

          • 你能解释一下为什么这是一个比之前已经发布的 5+ 更好的答案吗?它实际上是如何工作的?
          • 这对我来说实际上是所有答案中效果最好的。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-07-20
          • 1970-01-01
          • 2017-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-08-06
          相关资源
          最近更新 更多