JavaScript регулярное выражение: найти нечисловой символ - PullRequest
9 голосов
/ 05 августа 2010

Допустим, у меня есть две строки: "15.05.1983" и "1983.05.15". Предположим, что все символы в строке будут числовыми, кроме символа «разделитель», который может появляться в любом месте строки. Там будет только один символ-разделитель; все экземпляры любого заданного нечислового символа в строке будут идентичны.

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

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

Спасибо!

Ответы [ 3 ]

16 голосов
/ 05 августа 2010
"05-15-1983".match(/\D/)

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

1 голос
/ 05 августа 2010

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

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

<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 : -

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

0 голосов
/ 05 августа 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...