我需要构建一个正则表达式(在PHP中)匹配,如果一个字符串至少有一个字符与提供的集不同。这是我的设置:
A到Z和a到z,数字和áéíóúüÁÉÍÓÚÜ¡??! - :
所以这个词不应该匹配:塞巴斯蒂安 这场比赛:塞巴斯蒂安
由于varchar256的评论,我重新讨论了这个问题。顺便说一句,当示例与详细说明不同时,请将该示例作为文档作者的真实意图。
答案 0 :(得分:4)
preg_match('/[^A-Za-z0-9áéíóúüÁÉÍÓÚÜ¡¿!?\-:]/', ...);
注意括号内的^
- 反转匹配,因此这个正则表达式将匹配任何包含至少一个未列在括号内的字符的字符串。
答案 1 :(得分:0)
使用字符集模式:preg_match('/[^\wáéíóúüÁÉÍÓÚÜ¡¿!?-:]/')
答案 2 :(得分:0)
$string = "Sebastiàn";
$clean_string = preg_replace("/[^a-zA-ZáéíóúüÁÉÍÓÚÜ¡¿!?\\-:]*/",$string);
确保在字符类中转义短划线。