Javascript Regex: тестирование строки для интеллектуального запроса - PullRequest
0 голосов
/ 02 января 2011

У меня есть строка, которая содержит пользовательский ввод.Эта строка может содержать данные различных типов, например:

  • шестизначный идентификатор
  • почтовый индекс, который состоит из 4 цифр и двух буквенно-цифровых символов
  • имя(только символы)

Поскольку я использую эту строку для поиска в базе данных, тип запроса определяется типом поиска, который я хочу обрабатывать на стороне сервера с помощью JavaScript (да, я используюJavaScript на стороне сервера).Поиск в StackOverflow принес мне некоторую интересную информацию, такую ​​как .test-method, которая кажется идеальной для моих нужд.Метод test возвращает true или false, основываясь на оценке строки с использованием объекта регулярного выражения.

Я использую эту страницу в качестве ссылки: http://www.javascriptkit.com/jsref/regexp.shtml

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

var r = / [A-Za-z] {2,2} /

Насколько я понимаю, это должно ограничиватьколичество вхождений буквенно-цифровых символов не более двух.См. Вывод моей консоли JavaScript.

> var r = /[A-Za-z]{2,2}/
> var x = "2233AL"
> r.test(x)
true
> var x = "2233A"
> r.test(x)
false
> var x = "2233ALL"
> r.test(x)
true  /* i want this to be false */
> 

Небольшая помощь будет очень полезна!

Ответы [ 2 ]

2 голосов
/ 02 января 2011
/([^a-z]|^)[a-z]{2}([^a-z]|$)/i

часть 1: ([^ a-z] | ^) ... без буквы или начала строки

часть 2: [a-z] {2} ... две буквы

часть 3: ([^ a-z] | $) ... без буквы или конца строки

/ i ... без учета регистра

1 голос
/ 02 января 2011
var r = /[A-Za-z]{2,2}/

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

Нет, это говорит о том, что должно быть в не менее две буквы в AZ или az, и что они должны быть последовательными.Также может быть больше букв до или после матча.Синтаксис {2,2} также избыточен - вы можете использовать просто {2}, что означает то же самое.

Это регулярное выражение обеспечивает максимум две буквы в AZ или az:

var r = /^[^A-Za-z]*([A-Za-z][^A-Za-z]*){0,2}$/;

В этом написаны одна или несколько цифр, за которыми следуют ровно две буквы:

var r = /^\d+[A-Za-z]{2}$/;

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

...