Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярные выражения (https://javascript.ru/forum/misc/37853-regulyarnye-vyrazheniya.html)

I'm_Lazy 10.05.2013 23:48

Регулярные выражения
 
var regV = /(\d)?(шоссе)?(км)?(улица)?([a-zA-Z-])?/g;
Есть такое выражение, чтобы были цифры в строке или не было, чтобы было слово шоссе или не было, км, улица и буквы английские. Однако при выполнении например методом match наблюдаю в качестве результата, если в строке нет ничего подобного большое количество запятых.
var myString = "Черемушинский сельсовет, Лебяжьевский район, Курганская область, Уральский федеральный округ"
var Result = myString.match(regV);
И в итоге Result=,,,,,,,,,,,

edison 11.05.2013 03:40

эмм))
а что там хотели наблюдать?)))
Result - это массив
var regV = /(\d)?(шоссе)?(км)?(улица)?([a-zA-Z-])?/g; - эта регулярка подходит вообще подо все, притом подгруппы не запоминаются отдельно - т.е. (улица) это будет тоже самое что и (?:улица)
соответственно в массиве столько элементов сколько и символов в строке +1
т.к. поиск начинается с 0 символа-> находит совпадение пустоту->заносит ее в массив-> сдвигается в бок на символ и все повторяется пока не дойдет до конца строки.
а если вы массив выводите алертом или ее чем, то соответственно там и запятые вылазят ))
Цитата:

и буквы английские
не буквы, а буква, одна и цифра тоже одна )))

Пишите какой результат хотите и для чего это вообще.

I'm_Lazy 11.05.2013 16:48

Цитата:

Сообщение от edison (Сообщение 249841)
эмм))
а что там хотели наблюдать?)))
Result - это массив
var regV = /(\d)?(шоссе)?(км)?(улица)?([a-zA-Z-])?/g; - эта регулярка подходит вообще подо все, притом подгруппы не запоминаются отдельно - т.е. (улица) это будет тоже самое что и (?:улица)
соответственно в массиве столько элементов сколько и символов в строке +1
т.к. поиск начинается с 0 символа-> находит совпадение пустоту->заносит ее в массив-> сдвигается в бок на символ и все повторяется пока не дойдет до конца строки.
а если вы массив выводите алертом или ее чем, то соответственно там и запятые вылазят ))

не буквы, а буква, одна и цифра тоже одна )))

Пишите какой результат хотите и для чего это вообще.

Смотрите, допустим есть строка
myString="Московская область";

Хочу получить результат -1, если в этой строки нет слов улица, шоссе, км, а также чисел и букв английского алфавита. Но у меня получаются сплошные запятые и результат равен 0.

Aetae 11.05.2013 21:39

myString="Московская область";
alert(
    myString.search(/шоссе|км|улица|[a-zA-Z\d]/)
);

myString="Московская улица";
alert(
    myString.search(/шоссе|км|улица|[a-zA-Z\d]/)
);


Часовой пояс GMT +3, время: 01:52.