Скажем, у меня есть эти две строки: "5/15/1983" и "1983.05.15". Предположите, что все символы в строке будут цифровыми, кроме символа "разделителя", который может появиться где угодно в строке. Будет только один символ разделителя; все экземпляры любого данного нечислового символа в строке будут идентичны.
Как я могу использовать regex для извлечения этого символа? Существует ли более эффективный путь, чем тот ниже?
"05-15-1983".replace(/\d/g, "")[0];
Спасибо!
"05-15-1983".match(/\D/)
Технически это возвращает массив, содержащий одну строку, но он неявно преобразует в строку в большинстве случаев, когда вам это нужно.
Явно устал или не обращал внимания на мой предыдущий ответ. Извини за это. Я должен был написать:
var regexp = new RegExp("([^0-9])","g");
var separator = regexp.exec("1985-10-20")[1];
Конечно, работы Мэтью Флашена также хороши. Я просто хотел исправить свою.
Хотя я не мог точно понять, что вы пытаетесь сделать, я попытался извлечь числа только в одной строке и разделитель в следующей строке.
Я использовал приведенное выше:
<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 : -
Надеюсь, вы получили свой ответ