这是我的代码,但是我永远无法触发警报。
$(document).ready( function (){
$("[id*='txtAddress1S']").blur(function() {
var pattern = new RegExp('\b[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\b');
if ($("[id*='txtAddress1S']").val().match(pattern)) {
alert('We are unable to ship to a Post Office Box.\nPlease provide a different shipping address.');
}
});
});
最佳答案
在javascript中,您必须转义斜线:
var pattern = new RegExp('\\b[P|p]*(OST|ost)*\\.*\\s*[O|o|0]*(ffice|FFICE)*\\.*\\s*[B|b][O|o|0][X|x]\\b');
另外,您可以通过使用不区分大小写的匹配来稍微减少模式:
var pattern = new RegExp('\\b[p]*(ost)*\\.*\\s*[o|0]*(ffice)*\\.*\\s*b[o|0]x\\b', 'i');
注意:您的正则表达式还会与以下地址匹配:
我建议也检查字符串中的数字。也许来自previous answer的这种模式会有所帮助:
var pattern = new RegExp('[PO.]*\\s?B(ox)?.*\\d+', 'i');
(它在拼写出来的“邮局”上不匹配,或者在数字上不能代替。但这只是一个开始。)