我正在编写正则表达式以匹配地址,其中包含字符,空格,字母,逗号,数字,特殊字符,如Ö,œ,â等。
我想写地址的regex与所有字符匹配,在perl中删除特殊字符(Ö,œ,â)
我写了
qr/.{1,100}/i
但它与包括特殊字符在内的所有字符匹配,我只想匹配没有特殊字符的地址。
请帮助
答案 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