正则表达式排除特殊字符

时间:2015-02-26 11:25:31

标签: regex perl

我正在编写正则表达式以匹配地址,其中包含字符,空格,字母,逗号,数字,特殊字符,如Ö,œ,â等。

我想写地址的regex与所有字符匹配,在perl中删除特殊字符(Ö,œ,â)

我写了

qr/.{1,100}/i

但它与包括特殊字符在内的所有字符匹配,我只想匹配没有特殊字符的地址。

请帮助

3 个答案:

答案 0 :(得分:3)

听起来你想匹配ASCII字符集

/\p{ascii}+/

如果你想检查一个字符串是否包含任何非ASCII字符,那么你可以使用上面属性类的反转

print "String okay" unless /\P{ascii}/

答案 1 :(得分:0)

您可以使用

使用白色字符列表
/^[A-Za-z0-9_]*$/

或使用

的黑名单
/^[^öäü]*$/

第一个^匹配字符串的开头,第二个not匹配字符。 $匹配字符串的结尾。

我建议使用白名单,因为您可能知道可以处理的字符,但您可能不知道所有无法处理的字符。

答案 2 :(得分:-1)

我在javascript中尝试过。 它在java脚本中完美运行,您可以将其转换为perl。

这是代码

  

/ ^ [A-Za-z0-9() - ] * $ /

这允许ASCII字符和空格,但不允许在任何地方使用特殊字符。

Example:-
sdddd -- allowing
@xxx123 -- not allow
abcdfe4 -- allow
123 ba xx -- allow
pqrs_    -- Not allow