Javascript split regex question

后端 未结 7 1923
小鲜肉
小鲜肉 2020-11-29 21:11

hello I am trying what I thought would be a rather easy regex in Javascript but is giving me lots of trouble. I want the ability to split a date via javascript splitting ei

相关标签:
7条回答
  • 2020-11-29 21:43

    Say your string is:

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

    You want to split the string by the following delimiters:

    • Colon
    • Semicolon
    • New line

    You could split the string like this:

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

    Finally, you may need to trim the elements in the array:

    let elements = rawElements.map(element => element.trim());
    
    0 讨论(0)
  • 2020-11-29 21:44

    You need the put the characters you wish to split on in a character class, which tells the regular expression engine "any of these characters is a match". For your purposes, this would look like:

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

    Although dashes have special meaning in character classes as a range specifier (ie [a-z] means the same as [abcdefghijklmnopqrstuvwxyz]), if you put it as the last thing in the class it is taken to mean a literal dash and does not need to be escaped.

    To explain why your pattern didn't work, /-./ tells the regular expression engine to match a literal dash character followed by any character (dots are wildcard characters in regular expressions). With "02-25-2010", it would split each time "-2" is encountered, because the dash matches and the dot matches "2".

    0 讨论(0)
  • 2020-11-29 21:44

    try this instead

    date.split(/\W+/)

    0 讨论(0)
  • 2020-11-29 21:49

    you could just use

    date.split(/-/);
    

    or

    date.split('-');
    
    0 讨论(0)
  • 2020-11-29 21:51

    or just (anything but numbers):

    date.split(/\D/);
    
    0 讨论(0)
  • 2020-11-29 21:56

    Then split it on anything but numbers:

    date.split(/[^0-9]/);
    
    0 讨论(0)
提交回复
热议问题