Сопоставление нескольких входных значений в регулярном выражении - PullRequest
1 голос
/ 03 сентября 2010

У меня есть следующие входные значения, и я надеялся, что кто-нибудь может любезно сказать мне лучший способ сопоставить все «значения» (217, 218, 219) - HTML-код экранирован, и это то, что мне нужно сопоставить.

<input type=\"hidden\" name=\"id\" value=\"217\"\/>

<input type=\"hidden\" name=\"id\" value=\"218\"\/>

<input type=\"hidden\" name=\"id\" value=\"219\"\/>

Ответы [ 2 ]

4 голосов
/ 04 сентября 2010

Исходя из ваших комментариев к другим ответам, вы на самом деле хотите совпадать только с числами, если они соответствуют шаблону name=\"id\" value=\"###\", и, таким образом, существует четыре варианта, в зависимости от того, насколько точными будут ваши совпадения.Кроме того, основываясь на ваших комментариях, я использую javascript в качестве языка реализации.

Также обратите внимание, что предыдущий ответ неправильно экранировал косые черты вокруг строк id и value.

FWIW,Я проверил каждый из приведенных ниже вариантов:

Вариант 1: сопоставить любое число

//build the pattern
var pattern = /name=\"id\" value=\"([0-9]+)\"/g

//run the regex, after which:
//  the full match will be in array_matches[0]
//  the matching number will be in array_matches[1]
var array_matches = pattern.exec(strVal);

Вариант 2: сопоставить любое трехзначное число

//build the pattern
var pattern = /name=\"id\" value=\"([0-9]{3})\"/g

//run the regex, after which:
//  the full match will be in array_matches[0]
//  the matching number will be in array_matches[1]
var array_matches = pattern.exec(strVal);

Вариант 3: Соответствие определенным диапазонам 3-значных чисел

//build the pattern; modify to fit your ranges
//  This example matches 110-159 and 210-259
var pattern = /name=\"id\" value=\"([1-2][1-5][0-9])\"/g

//run the regex, after which:
//  the full match will be in array_matches[0]
//  the matching number will be in array_matches[1]
var array_matches = pattern.exec(strVal);

Вариант 4: Соответствие определенным 3-значным номерам

//build the pattern; modify to fit your numbers
//  This example matches 217, 218, 219 and 253
var pattern = /name=\"id\" value=\"(217|218|219|253)\"/g

//run the regex, after which:
//  the full match will be in array_matches[0]
//  the matching number will be in array_matches[1]
var array_matches = pattern.exec(strVal);
1 голос
/ 03 сентября 2010

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

/([0-9]+)/g

В зависимости от языка, который вы используете, вам нужно перенести это регулярное выражение и использовать правильную функцию.

В JS вы можете использовать:

var array_matches = "your string".match(/([0-9]+)/g);

В PHP вы можете использовать:

preg_match("([0-9]+)", "your string", array_matches);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...