Как я могу преобразовать этот положительный взгляд за спиной в утверждение? - PullRequest
0 голосов
/ 23 июля 2010

Я использую следующее регулярное выражение в своем коде для проверки символов опций:

^([A-Za-z]{1,5}\d? +\b(?<=^.{6}))[0-9]{6}[CcPp][0-9]{8}$

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

Однако JScript Regex, по-видимому, не поддерживает lookbehinds, но поддерживает lookahead.

Итак, я подумал, что если я сделаю что-то вроде:

^((?=^.{6})[A-Za-z]{1,5}\d? +\b)[0-9]{6}[CcPp][0-9]{8}$

Thisбудет работать.

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

Некоторые примеры тестовых случаев, с которыми я работаю:

Should fail:
1GOOG 12E456C12345678
 GOOG 12E456C12345678
GE 4  12E456C12345678
GE4    12E456C12345678

Should pass:
GOOG1 123456C12345678
F5    123456C12345678

Как я могу успешно преобразовать этот взгляд назад в взгляд, чтобы я мог использовать это выражение в javascript?

1 Ответ

2 голосов
/ 23 июля 2010

Почему бы не проверить 5 символов, затем пробел, затем не пробел?

(?=.{5}\s\S)

(или в контексте полного шаблона ...)

^(?=.{5}\s\S)([A-Za-z]{1,5}\d? +\b)[0-9]{6}[CcPp][0-9]{8}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...