无法否定标记中的正则表达式

无法否定标记中的正则表达式

我需要验证字符串不应包含邮政信箱,也不应包含特殊字符(仅接受连字符、逗号和空格)。所以,我想出了正则表达式:

/^(?!.*(?:(.*((p|post)[-.\s]*(o|off|office)[-.\s,]*(box)[-.\s]*)|.*((p |post)[-.\s]*(box)[-.\s]*))))[0-9a-zA-Z\s\-\,]{1,40}$/i

例如:

Test Po Box - Should NOT be acceptable
Test Post Office Box - Should NOT be acceptable
Test Po,Box - Should NOT be acceptable
Test PO BOx - Should NOT be acceptable
Test-123po - Should be acceptable
Test-!@$% - Should NOT be acceptable
Test123@#$ PoBOX - Should NOT be acceptable.

但看起来它不起作用。

有什么帮助吗?

答案1

使用:

^(?=(?:(?!(?:post office|po)[ ,.-]?box).)*$)[\w ,.-]+$

演示与说明

相关内容