Новичок в регулярных выражениях нуждается в помощи - PullRequest
0 голосов
/ 02 мая 2009

Мне нужна форма с одной кнопкой и окном для ввода

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

И найдет точное совпадение букв + цифр. Пример wxyz [некоторое пространство между прочим] 0960000

или сочетание цифр и букв [между прочим, пробел] + цифры 01xg [между прочим, пробел] 0960000

На данный момент в массиве четыре объекта.

Когда я найду нужную мне функцию, откроется новая страница или окно, когда совпадение будет найдено.

Спасибо за вашу помощь.

Michael

1 Ответ

2 голосов
/ 02 мая 2009

Чтобы ответить на часть Javascript, вот один из способов «grep» через массив, чтобы найти подходящие элементы:

var matches = [];
var re = /whatever/;

foo.forEach(
  function(el) {
    if( re.exec(el) )
      matches.push(el);
  }
);

Чтобы попытаться ответить на часть регулярного выражения: я не знаю, что означает для вас «точное совпадение», и я предполагаю, что «некоторое пространство» принадлежит только между другими терминами, и я предполагаю, что буквы означают английский алфавит от 'a' до 'z' в нижнем и верхнем регистре и цифры должны быть 0-9 (в противном случае могут совпадать символы других языков).

Первым шаблоном будет / [a-zA-Z0-9] + \ s * 0960000 /. Измените "\ s *" на "\ s +", если есть хотя бы один пробел вместо нуля или более пробелов. Измените "\ s" на "", если сопоставление символа табуляции (и некоторых менее используемых пробелов) нежелательно.

Для второго паттерна я не знаю, что означает «числа 01xg», но если это означает числа, за которыми следует эта строка, то паттерн будет / [a-zA-Z0-9] + \ s * [ 0-9] + \ с * 01xg \ s * 0960000 /. Применяются те же предостережения, что и выше.

Кроме того, это будет соответствовать частичной строке. Если строка полностью совпадает (если в строке не должно быть ничего, кроме того, которое сопоставляется), добавьте «^» в начало шаблона, чтобы привязать его к началу строки, и «$» в конце привязать его к концу строки. Например, / [a-zA-Z0-9] + \ s * 0960000 / соответствует «foo_bar 5 0960000», а / ^ [a-zA-Z0-9] + \ s * 0960000 $ / - нет.

Подробнее о регулярных выражениях в Javascript см. Статью developer.mozilla.org об объекте RegExp (ссылка ведет на ссылку на версию 1.5 JS, которая должна применяться ко всем JS-совместимым). браузеры).

(отредактировано для добавления) : чтобы соответствовать любой ситуации, поскольку они имеют перекрывающиеся части, вы можете использовать следующий шаблон: / [a-zA-Z0-9] + (?: \ S * [0-9] + \ с * 01xg)? \ s * 0960000 /. Вопросительный знак говорит, чтобы соответствовать части, которая отличается - в несоответствующей группе (?: Foo) - один раз или ноль раз. (?: Foo)? и (?: foo |) делают то же самое в этом случае, но я не уверен, есть ли разница в производительности; Я бы порекомендовал использовать тот, который наиболее вам подходит, чтобы вы могли прочитать его позже.

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