PHP / регулярное выражение, чтобы проверить, содержит ли строка слово определенной длины - PullRequest
1 голос
/ 17 июля 2010

Мне нужно проверить, содержит ли полученная строка слова длиной более 20 символов. Например, входная строка:

привет, асссссссссссссссссссскккккккк, как дела?

вернул бы true.

Может кто-нибудь помочь мне с регулярным выражением, чтобы проверить это. я использую php.

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 17 июля 2010
/\w{20}/

... заполнитель для 15 символов ....

3 голосов
/ 17 июля 2010

Вы можете проверить, содержит ли строка совпадение следующего шаблона:

[A-Za-z]{20}

Конструкция [A-Za-z] создает класс символов, который соответствует прописным и строчным буквам ASCII.{20} - это синтаксис с конечным повторением.Достаточно проверить, есть ли совпадение, содержащее 20 букв, потому что если есть слово, содержащее больше, оно содержит не менее 20.

Ссылки


Фрагмент PHP

Вот пример использования:

$strings = array(
  "hey what the (@#$&*!@^#*&^@!#*^@#*@#*&^@!*#!",
  "now this one is just waaaaaaaaaaaaaaaaaaay too long",
  "12345678901234567890123 that's not a word, is it???",
  "LOLOLOLOLOLOLOLOLOLOLOL that's just unacceptable!",
  "one-two-three-four-five-six-seven-eight-nine-ten",
  "goaaaa...............aaaaaaaaaalll!!!!!!!!!!!!!!",
  "there is absolutely nothing here"
);

foreach ($strings as $str) {
  echo $str."\n".preg_match('/[a-zA-Z]{20}/', $str)."\n";
}

Это печатает ( как видно на ideone.com ):

hey what the (@#$&*!@^#*&^@!#*^@#*@#*&^@!*#!
0
now this one is just waaaaaaaaaaaaaaaaaaay too long
1
12345678901234567890123 that's not a word, is it???
0
LOLOLOLOLOLOLOLOLOLOLOL that's just unacceptable!
1
one-two-three-four-five-six-seven-eight-nine-ten
0
goaaaa...............aaaaaaaaaalll!!!!!!!!!!!!!!
0
there is absolutely nothing here
0

Как указано в шаблоне, preg_match имеет значение true, когда есть «слово» (как определено в последовательностибукв) длиной не менее 20 символов.

Если это определение слова не подходит, просто измените шаблон на, например, \S{20}.То есть любая последовательность из 20 непробельных символов;теперь все, кроме последней строки, совпадают ( как видно на ideone.com ).

0 голосов
/ 17 июля 2010

Я думаю, что функция strlen - это то, что вы ищете. Вы можете сделать что-то вроде этого:

if (strlen($input) > 20) {
    echo "input is more than 20 characters";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...