PHP найти слова, которые не в регулярном выражении - PullRequest
1 голос
/ 21 июля 2010

Я написал следующее регулярное выражение /^[A-Za-z0-9-_\s]*$/ в PHP, которое допускает числа, буквы, пробелы, дефис и подчеркивание. Я хочу показать те совпадения, которые недопустимы с регулярным выражением, т. Е. "Меня зовут Блабла !!!" должен дать мне "!!!" выход.

Ответы [ 4 ]

10 голосов
/ 21 июля 2010

Используйте символ каретки внутри класса символов, чтобы инвертировать совпадение и удалить начальный (^) и конечный ($) символы:

/[^A-Za-z0-9-_\s]+/

http://php -regex.blogspot.com / 2008/01 / как к-символьная запись отрицания-class.html

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

Если вы замените все совпадения на пустую строку, вы получите несоответствующие части:

preg_replace('/[A-Za-z0-9-_\s]+/', '', $string)

Это будет работать для любого произвольного регулярного выражения, но для вашего конкретного регулярного выражения @ Решение Энди проще.

Обратите внимание, что я удалил якоря ^ и $, чтобы сделать эту работу.

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

Вы должны поставить дефис - в начале или в конце класса персонажа или избежать его, чтобы ваше регулярное выражение было:

/[^-A-Za-z0-9_\s]+/

или

/[^A-Za-z0-9_\s-]+/

или

/[^A-Za-z0-9\-_\s]+/
0 голосов
/ 21 июля 2010

preg_replace("/^[A-Za-z0-9-_\s]*$/","","My Name is Blahblah!!!") // Output: "!!!"

Или, если вы хотите, чтобы все их группировки

preg_split("/^[A-Za-z0-9-_\s]*$/","","My Name is Blahblah!!!")

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