JavaScript 中的正则表达式验证在 IE8 中失败
Regular expression validation in javascript failing in IE8
尝试使用这个
(^AD''[a-zA-Z]+$)|(^ad''[a-zA-Z]+$)|(^Ad''[a-zA-Z]+$)
或
^(AD|ad|Ad)''([a-zA-Z]+$)
尝试验证 AD''loginid 或 ad''loginid 或 Ad''loginid 等字符串
上面的正则表达式在正则表达式测试器在线上运行良好。喜欢 http://regexpal.com/或 http://www.regular-expressions.info/javascriptexample.html
但是当我将其合并到脚本验证中时,以下代码失败了......
var lanidRegex = new RegExp("(^AD''[a-zA-Z]+$)|(^ad''[a-zA-Z]+$)|(^Ad''[a-zA-Z]+$)");
alert(lanidRegex.test("AD'loginid"));
我已经多次以不同的方式重写了正则表达式,但没有运气。
> 使用 new RegExp
时,需要使用双倍的反斜杠(在本例中为四反斜杠),因为第一个反斜杠用于转义字符串,而正则表达式可以看到第二个反斜杠。
你的目的是让正则表达式匹配反斜杠'
,这意味着正则表达式引擎需要看到一个转义的反斜杠''
,这意味着你的字符串需要包含四个反斜杠"''''"
。
我认为你需要:
var lanidRegex = new RegExp("(^AD''''[a-zA-Z]+$)|(^ad''''[a-zA-Z]+$)|(^Ad''''[a-zA-Z]+$)");
一个反斜杠用于将每个反斜杠放入字符串中,另一个反斜杠用于告诉正则表达式中引用了反斜杠。
在警报行中,您只需要其中两个:
alert(lanidRegex.test("AD''loginid"));
(感谢其他回答者注意到这一点。
小提琴
替代版本也有效:
var lanidRegex = /(^AD''[a-zA-Z]+$)|(^ad''[a-zA-Z]+$)|(^Ad''[a-zA-Z]+$)/;
你有一些转义问题。 首先用/包围你的正则表达式模式,它负责处理字符串中的一堆转义问题。
var lanidRegex = new RegExp(/(^AD''[a-zA-Z]+$)|(^ad''[a-zA-Z]+$)|(^Ad''[a-zA-Z]+$)/);
其次,您需要转义测试字符串中的 ''。
alert(lanidRegex.test("AD''loginid"));
问题是'
在Javascript中有两个目的:它是字符串中的转义前缀,也是正则表达式中的转义前缀。由于您正在使用字符串来初始化正则表达式,因此它正在执行字符串转义。这会导致正则表达式中出现单个反斜杠,因此它会转义方括号。
相反,请使用正则表达式文本:
var lanidRegex = /(^AD''[a-zA-Z]+$)|(^ad''[a-zA-Z]+$)|(^Ad''[a-zA-Z]+$)/;
alert(lanidRegex.test("AD''loginid"));
请注意,您还需要在文本字符串 "AD''loginid"
中加倍反斜杠。
通过使用不区分大小写的修饰符,可以大大简化您的正则表达式i
:
var lanidRegex = /^ad''[a-z]+$/i;
如果您不想在开始时允许aD
,仍然可以简化它:
var lanidRegex = /^(AD|ad|Ad)''[a-zA-Z]+$/;
您只需要前缀中的替代项,其余的对于所有变体都是通用的。
你可以做得更简单
var lanidRegex = new RegExp("^(AD|ad|Ad)'([a-zA-Z]+)$");
var res = lanidRegex.test("AD'loginid");
window.console && console.log(res);
终于奏效了
var lanidRegex = new RegExp("^(AD|ad|Ad)''''([a-zA-Z]+$)", "gi");
lanidRegex.test("ad'name")
- 在 ie8 中使用茉莉花比较数组失败
- KnockoutJS 伪绑定在 IE8 中失败
- AngularJS 重定向在 IE8 上失败
- 在jQuery中创建一个带有属性的HTML元素,在ie7和ie8中失败
- JavaScript 中的正则表达式验证在 IE8 中失败
- Socket.IO 和 IE8 - jsonp 轮询连接总是失败
- Ajax脚本在IE8中失败
- jQuery在IE8中失败
- 在IE8中初始化另一个对象内部的对象失败
- Jcrop在特定服务器上的IE8下失败,在另一台服务器上工作
- 只有在ie8 /9的iframe内,GWT应用程序才会失败
- 如果文本中有任何格式,为什么这个函数会失败?(在IE8)
- 下划线模板使用“意外标识符”失败.在ie8中
- AJAX调用在Opera和IE8中失败
- 文档.在表、tr、td标签上创建元素在IE8上失败
- JavaScript / HTML -新的音频JavaScript在ie8及以下版本中失败
- Document.write()和document.images[i].宽度在IE8中失败
- formatNumber函数在IE8中失败,显示3.3500.3500000而不是3.500.000
- IE8中的Google Maps API加载失败(“Google'is undefined”)
- Ajax.请求在IE8/9中不能与CORS一起工作,静默失败