JavaScript regex: найдите нечисловой символ

Скажем, у меня есть эти две строки: "5/15/1983" и "1983.05.15". Предположите, что все символы в строке будут цифровыми, кроме символа "разделителя", который может появиться где угодно в строке. Будет только один символ разделителя; все экземпляры любого данного нечислового символа в строке будут идентичны.

Как я могу использовать regex для извлечения этого символа? Существует ли более эффективный путь, чем тот ниже?

"05-15-1983".replace(/\d/g, "")[0];

Спасибо!

9
задан JamesBrownIsDead 5 August 2010 в 01:29
поделиться

3 ответа

"05-15-1983".match(/\D/)

Технически это возвращает массив, содержащий одну строку, но он неявно преобразует в строку в большинстве случаев, когда вам это нужно.

16
ответ дан 4 December 2019 в 12:15
поделиться

Явно устал или не обращал внимания на мой предыдущий ответ. Извини за это. Я должен был написать:

var regexp = new RegExp("([^0-9])","g");
var separator = regexp.exec("1985-10-20")[1];

Конечно, работы Мэтью Флашена также хороши. Я просто хотел исправить свою.

0
ответ дан 4 December 2019 в 12:15
поделиться

Хотя я не мог точно понять, что вы пытаетесь сделать, я попытался извлечь числа только в одной строке и разделитель в следующей строке.

Я использовал приведенное выше:

<script>
var myStr1 = "1981-01-05";
var myStr2 = "1981-01-05";
var RegEx1 = /[0-9]/g;
var RegEx2 = /[^0-9]/g;
var RegEx3 = /[^0-9]/;
document.write( 'First : ' + myStr1.match( RegEx1 ) + '<br />' );
document.write( 'tooo : ' + myStr2.replace( RegEx2,  "" ) + '<br />' );
document.write( 'Second : ' + myStr1.match( RegEx2 ) + '<br />'  );
document.write( 'Third : ' + myStr1.match( RegEx3 ) + '<br />'  );
</script>

Вывод:

First : 1,9,8,1,0,1,0,5
tooo : 19810105
Second : -,-
Third : -

Надеюсь, вы получили свой ответ

1
ответ дан 4 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: