Вопрос о 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());