2012-05-31 3 views
12

У меня есть длинная строка в JavaScript какРегулярное совпадение строк?

var string = 'abc234832748374asdf7943278934haskhjd';

Я пытаюсь соответствовать как

abc234832748374 - то есть - я попытался как

string.match(\abc[^abc]|\def[^def]|) но не получает мне обе строки потому что мне нужны номера после них?

В принципе мне нужно abc + 8 символов после и def 8-11 символов после? Как я могу это сделать ?

ответ

25

Если вы хотите буквенные строки abc или def следует 8-11 цифр, вам нужно что-то вроде:

(abc|def)[0-9]{8,11} 

вы можете проверить его здесь: http://www.regular-expressions.info/javascriptexample.html

Имейте в виду, что, если вы не хотите, чтобы соответствовать более чем 11 ди gits, вам понадобится якорь (или [^0-9]) в конце строки. Если это всего 8 или больше, вы можете заменить {8,11} на {8}.

1

Вы можете сопоставить abc[0-9]{8} для строки abc, а затем 8 цифр.

Если первые три символа является произвольным, и 8-11 цифр после этого, попробуйте [a-z]{3}[0-9]{8,11}

1

Используйте ниже регулярное выражение, чтобы получить точное соответствие,

string.match(/(abc|def)\d{8,11}/g); 

Заканчивается г

"g" глобального

"i" для IgnoreCase

"m" для многострочного

9

К разрабатывать на уже размещен ответ, вам нужен глобальный матч, следующим образом:

var matches = string.match(/(abc|def)\d{8,11}/g); 

Это будет соответствовать все подмножества строки, которые:

  • Начните с «ABC» или «DEF». Это часть «(abc | def)»
  • Затем следуют 8-11 цифр. Это часть «\ d {8,11}». \ d соответствует цифрам.

Флаг «g» (глобальный) получает список всех совпадений, а не только первый.

В вашем вопросе вы указали 8-11 символов, а не цифр. Если неважно, являются ли они цифрами или другими символами, вы можете использовать «.». вместо "\ d".

Я также замечаю, что каждый из ваших совпадений соответствует более чем 11 символам, следующим за «abc» или «def». Если любое число цифр будет делать, то следующее регулярное выражение может быть лучше подходит:

  • Любое количество цифр - var matches = string.match(/(abc|def)\d*/g);
  • По крайней мере, одна цифра - var matches = string.match(/(abc|def)\d+/g);
  • По крайней мере 8 цифр - var matches = string.match(/(abc|def)\d{8,}/g);
+1

+1 Потратьте время, чтобы написать объяснение! –

Смежные вопросы