PHP правильный шаблон поиска символа в пределах буквенно-цифровой строки фиксированной длины - PullRequest
0 голосов
/ 09 августа 2010

Я сделал поиск, но ничего не нашел. Я ищу шаблон, который будет искать в буквенно-цифровой строке (с точной длиной 7) букву "P". Это то, что я придумал до сих пор, почему не работает?

$pattern = "/^[\wP]{7}$/";

Ответы [ 4 ]

1 голос
/ 09 августа 2010

Ну, это не работает, потому что [\wP]{7} (в вашем регулярном выражении: /^[\wP]{7}$?/) означает найти 7 символов, которые являются либо символом слова, либо буквой P. Он может найти все P и будет соответствовать, или все словасимволы, и это будет соответствовать.Мое быстрое решение состояло бы в том, чтобы проверить, что строка состоит из 7 букв, используя регулярное выражение, а затем сделать позицию строки, чтобы найти "P":

if(preg_match("/^[\w]{7}$/", $target) && strpos($target, "P") != -1) {
    // Do stuff
}
0 голосов
/ 09 августа 2010

Это должно соответствовать любой строке длиной 7 символов и содержащей заглавную букву P:

(?=^\w{7}$)\w*P\w*
0 голосов
/ 09 августа 2010

\w содержит a-z, A-Z, 0-9 и _, так что это совсем не то, что вы хотите.

Я попробую с:

if ( preg_match("/^[a-z0-9]*P[a-z0-9]*$/i", $target) && ( strlen($target) == 7 ) ) { ... }
0 голосов
/ 09 августа 2010

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

$ pattern = '/ ^ ([a-zA-Z0-9] {6}) (P {1}) $ /';

Вы можетеКондер, использующий strpos и strlen для скорости!

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