#javascript #regex
#javascript #Регулярное выражение
Вопрос:
У меня есть этот бит Javascript,
if (/[A-Za-z0-9-] /.test(sZip)) {
alert(Match!);
}
и я использую это в качестве своего тестового примера «1234;»
Я не хочу, чтобы «1234;» совпадало, я хочу, чтобы совпадали только, например, «1234» или «12 34» или «12-34».
Комментарии:
1.
Match!
должно содержаться в кавычках.2. Просто короткое уточнение: должно ли ‘;1234’ совпадать?
3. @exiva, если вы хотите сопоставить все, тогда
"12 34"
не следует сопоставлять, поскольку оно содержит пробел. Или вы забыли включить его в свой класс символов?
Ответ №1:
/[A-Za-z0-9-] $/
($ — это ключ: это означает конец строки, не более символов)
Комментарии:
1. Извините, ранее я делал комментарий, рекомендующий добавить
^
, но, похоже, этого, вероятно, не следует делать (см. Мой комментарий под ответом Болдевина).2. Хм, это правда, снова удалено 🙂
Ответ №2:
Начните регулярное выражение с ^
и завершите его $
. Таким образом, вы указываете ему, чтобы он соответствовал всей строке шаблону. Документы MDN.
Если вы хотите, чтобы пространство соответствовало, вам нужно включить его в скобки. Для разделения буквенно-цифровых полей пробелом и тире используйте следующий подход:
/^([A-Za-z0-9] [ -])*[A-Za-z0-9] $/
---^ 0 or more "ABC123-" fields
---------------^ separated by either dash or space
---------------------^ but at least once a "ABC123" field (no dash)
Комментарии:
1. Хм, я не думаю, что OP хочет
^
, чтобы, поскольку он хочет"12 34"
, чтобы ему соответствовали, который содержит пробел, которого нет в его наборе символов[A-Za-z0-9-]
.2. Давайте спросим его. Я понял необходимость
^
из названия вопроса.
Ответ №3:
if (/[A-Za-z0-9-] $/.test(sZip)) {
alert(Match!);
}
Ответ №4:
Это должно сработать:
if (/[A-Za-z0-9-] s/.test(sZip)) {
alert(Match!);
}