s15*_*99d 12 javascript regex jquery
这是我的代码,但我无法触发警报.
$(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.');
}
});
});
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Dat*_*han 38
我尝试了在互联网上找到的几个PO Box RegExp模式,包括在Stack Overflow上发布的模式,它们都没有通过我们的测试要求.因此,我在下面发布了我们的RegExp和我们的测试集:
var poBox = /^ *((#\d+)|((box|bin)[-. \/\\]?\d+)|(.*p[ \.]? ?(o|0)[-. \/\\]? *-?((box|bin)|b|(#|num)?\d+))|(p(ost)? *(o(ff(ice)?)?)? *((box|bin)|b)? *\d+)|(p *-?\/?(o)? *-?box)|post office box|((box|bin)|b) *(number|num|#)? *\d+|(num|number|#) *\d+)/i;
var matches = [ //"box" can be substituted for "bin"
"#123",
"Box 123",
"Box-122",
"Box122",
"HC73 P.O. Box 217",
"P O Box125",
"P. O. Box",
"P.O 123",
"P.O. Box 123",
"P.O. Box",
"P.O.B 123",
"P.O.B. 123",
"P.O.B.",
"P0 Box",
"PO 123",
"PO Box N",
"PO Box",
"PO-Box",
"POB 123",
"POB",
"POBOX123",
"Po Box",
"Post 123",
"Post Box 123",
"Post Office Box 123",
"Post Office Box",
"box #123",
"box 122",
"box 123",
"number 123",
"p box",
"p-o box",
"p-o-box",
"p.o box",
"p.o. box",
"p.o.-box",
"p.o.b. #123",
"p.o.b.",
"p/o box",
"po #123",
"po box 123",
"po box",
"po num123",
"po-box",
"pobox",
"pobox123",
"post office box"
];
var nonMatches = [
"The Postal Road",
"Box Hill",
"123 Some Street",
"Controller's Office",
"pollo St.",
"123 box canyon rd",
"777 Post Oak Blvd",
"PSC 477 Box 396",
"RR 1 Box 1020"
];
Run Code Online (Sandbox Code Playgroud)
dru*_*dge 16
在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');
Run Code Online (Sandbox Code Playgroud)
此外,您可以通过使用不区分大小写的匹配来减少您的模式:
var pattern = new RegExp('\\b[p]*(ost)*\\.*\\s*[o|0]*(ffice)*\\.*\\s*b[o|0]x\\b', 'i');
Run Code Online (Sandbox Code Playgroud)
注意:您的正则表达式也匹配以下地址:
我建议还检查字符串中的数字.也许以前的答案中的这种模式会有所帮助:
var pattern = new RegExp('[PO.]*\\s?B(ox)?.*\\d+', 'i');
Run Code Online (Sandbox Code Playgroud)
(它不会与拼写出的"邮局"或数字替换相匹配..但它是一个开始.)
使用Javascript更容易使用正则表达式文字,如下所示:
var pattern = /\b(?:p\.?\s*o\.?|post\s+office)\s+box\b/i;
Run Code Online (Sandbox Code Playgroud)
(不需要反斜杠!)
| 归档时间: |
|
| 查看次数: |
21550 次 |
| 最近记录: |