Вопрос о Javascript split regex

Привет, Я пытаюсь сделать то, что, как я думал, будет довольно простым регулярным выражением в Javascript, но вызывает много проблем. Я хочу возможность разделить дату с помощью javascript, разделяющего либо '-', '.', '/' И ''.

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

Какое правильное регулярное выражение для этого поможет любая помощь.

Ответ 1

Вам нужно положить символы, которые вы хотите разделить, в класс символов, который сообщает движку регулярных выражений "любой из этих символов матч". Для ваших целей это будет выглядеть так:

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

Хотя тире имеют особое значение в символьных классах в качестве спецификатора диапазона (т.е. [a-z] означает то же самое, что и [abcdefghijklmnopqrstuvwxyz]), если вы ставите его как последнее в классе, то это означает, что он буквальный тире и делает не нужно бежать.

Чтобы объяснить, почему ваш шаблон не работает, /-./ указывает движку регулярных выражений соответствовать буквенному тире символов, за которым следует любой символ (dots являются подстановочными символами в регулярных выражениях). С "02-25-2010" он будет разбиваться каждый раз, когда встречается "-2", потому что черточка совпадает, а точка соответствует "2".

Ответ 2

или просто (ничего, кроме цифр):

date.split(/\D/);

Ответ 3

вы можете просто использовать

date.split(/-/);

или

date.split('-');

Ответ 4

Затем разделите его на что угодно, кроме чисел:

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

Ответ 5

или просто использовать для строк даты 2015-05-20 или 2015.05.20

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

Ответ 6

Скажите, что ваша строка:

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