Javascript分割正则表达式问题


116

你好,我正在尝试我以为用Java语言编写的正则表达式很简单,但是却给我带来了很多麻烦。我希望能够通过javascript通过“-”,“。”,“ /”和“”来拆分日期。

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

什么是正确的正则表达式,任何帮助都将是很大的。

Answers:


174

您需要将希望分割的字符放在一个字符类中该类告诉正则表达式引擎“这些字符中的任何一个都是匹配项”。为了您的目的,这看起来像:

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

尽管破折号在字符类中作为范围说明符具有特殊含义(即[a-z],与含义相同[abcdefghijklmnopqrstuvwxyz]),但是如果将其作为类中的最后一项放置,则它被视为表示文字破折号,不需要进行转义。

要说明您的模式为何无效的原因,请/-./告诉正则表达式引擎匹配文字破折号后跟任意字符(是正则表达式中的通配符)。对于“ 02-25-2010”,它将在每次遇到“ -2”时拆分,因为破折号匹配且点匹配“ 2”。


3
您还可以提到,点在字符类内部没有任何特殊含义-它不像通配符一样(没有任何意义),而是像文字一样。
鲍比·杰克

11

或者只是(数字以外的任何东西):

date.split(/\D/);


5

然后将其除数字以外的任何东西:

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

3

说您的字符串是:

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());


-1

试试这个代替

date.split(/ \ W + /)


您能解释一下为什么这比以前已经发布的5个以上版本更好吗?以及它如何实际运作?
mjuarez

实际上,这对我来说是最有效的。
reectrix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.