регулярное выражение: читать символ за числом - PullRequest
0 голосов
/ 07 октября 2010

У меня есть код регулярного выражения:

<script type="text/javascript">
     var str = "kw-xr55und";
     var patt1 = /[T|EE|EJU].*D/i;
     document.write(str.match(patt1));
</script>

может читать:

str= "KD-R55UND" -> as UND

но если я наберу:

 str= "kw-tc800h2und ->  result tc-800h2und.  //it makes script read T in front of 800
 i want the result as UND 

как сделать так, чтобы код просто проверял символ за 800?

EDIT

После этого кода он может работать:

<script type="text/javascript">
var str = "kw-tc800h2und";
var patt1 = /[EJTUG|]\D*D/i;
document.write(str.match(patt1));
</script>

но покажи следующую проблему, я могу показать результат, если:

str= "kw-tc800un2d"

i want result like -> UN2D

Ответы [ 4 ]

1 голос
/ 07 октября 2010

Попробуйте это:

 var patt1 = /(T|EE|EJU)\D*$/i;

Будет соответствовать последовательности нецифровых символов, начинающейся с T, EE или EJU и заканчивающейся в конце строки. Если строка должна заканчиваться D, как в ваших примерах, вы можете добавить это в:

 var patt1 = /(T|EE|EJU)\D*D$/i;

Если вы хотите сопоставить его где угодно, а не только в конце строки, попробуйте это:

 var patt1 = /(T|EE|EJU)\D*D/i;

РЕДАКТИРОВАТЬ: Ой! Нет, конечно, это не работает. Я попытался угадать, что вы имели в виду под [T|EE|EJU], потому что это класс символов, который соответствует одному символов E, J, T, U или | (эквивалент на [EJTU|]), и я был уверен, что это не то, что вы имели в виду. Но, черт возьми, попробуйте это:

 var patt1 = /[EJTU|]\D*D/i;

Я до сих пор не понимаю, что вы пытаетесь сделать, но иногда методом проб и ошибок является единственным способом двигаться вперед. По крайней мере, я проверил это на этот раз! : P

РЕДАКТИРОВАТЬ: Хорошо, так что матч может содержать цифр, он просто не может начинаться с одного. Попробуйте это:

var patt1 = /[EJTU|]\w*D/i;
1 голос
/ 07 октября 2010

Для PCRE попробуйте это:

/(?<=\d)\D*/

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

Для Javascript попробуйте это:

/\D+$/

Он будет соответствовать любым символам, которые не являются цифрами от конца текста назад.

0 голосов
/ 07 октября 2010

В зависимости от того, какой тип регулярного выражения вы используете, вы можете использовать утверждение позади.По сути, он скажет «сопоставьте это, если сразу после числа».

В Python это выглядит так:

(?<=\d)\D*

О, также, регулярное выражение чувствительно к региструесли вы не установите его не быть.

0 голосов
/ 07 октября 2010

Попробуйте /[TEUJ]\D*\d*\D*D$/i, если в нем может быть 1 цифра, но не 2. Для получения более конкретной информации потребуется дополнительная информация, такая как максимальная длина строки или то, что именно отличается между синтаксическим анализом tc800h2und и h2und.

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