Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式IE前瞻错误_Javascript_Regex_Internet Explorer_Validation - Fatal编程技术网

Javascript 正则表达式IE前瞻错误

Javascript 正则表达式IE前瞻错误,javascript,regex,internet-explorer,validation,Javascript,Regex,Internet Explorer,Validation,我试图定义ASP.NET验证程序正常运行所需的正则表达式。目前,使用下面的表达式,我能够在firefox中正确验证以下示例字符串,但在IE中不能 12{2}12{0-9}1{12,13} 使用 ({\d+\})*|(\d)*|({(\d+,)+\d+\})*|({(\d+)-(\d+)\})*++ 在做了一些研究之后,这似乎是由于前瞻性缺陷造成的,但由于我对使用regex还相当陌生,我不明白如何正确地修改它以解决该缺陷 请用更高的知识喂养我 编辑: 表达式必须匹配字符串中任意顺序的这三个可选单个

我试图定义ASP.NET验证程序正常运行所需的正则表达式。目前,使用下面的表达式,我能够在firefox中正确验证以下示例字符串,但在IE中不能

12{2}12{0-9}1{12,13}

使用

({\d+\})*|(\d)*|({(\d+,)+\d+\})*|({(\d+)-(\d+)\})*++

在做了一些研究之后,这似乎是由于前瞻性缺陷造成的,但由于我对使用regex还相当陌生,我不明白如何正确地修改它以解决该缺陷

请用更高的知识喂养我

编辑: 表达式必须匹配字符串中任意顺序的这三个可选单个组件。我试图用一个表达式来描述每个单独的组件,然后将它们合并成一个表达式

{n} regex {\d+\}  to match sample {423} optional digits

{n,n,n} regex {(\d+,)+\d+\} to match sample set of digit {24,25,26}

{n-n} regex {(\d+)\-(\d+)\} to match sample range of {0-9}

individual digits (\d) to match sample 232
编辑2: 最后,我将使用这个表达,并特别感谢woohoo

(\d*******)*(\d******)+(\d*******)+-(\d******)+(\d******)+(\d*********)+,)+(\d*******)+(\d**********)+)+(\d*******)+


该表达式在每个位置都支持数字#和*。

恐怕您上面发布的正则表达式有一些错误,而且看起来太复杂,无法实现您想要实现的目标。我会这样做:

\d+\{(\d+|\d+\-\d+|\d+\,\d+)\}
最终,您可以添加+符号以匹配其中一个或多个

(\d+\{(\d+|\d+\-\d+|\d+\,\d+)\})+
或者,如果要匹配其中的特定数量,请使用{m,n}定量表达式:

(\d+\{(\d+|\d+\-\d+|\d+\,\d+)\}){3,}

在本例中,我将其精确匹配为3个片段。

这是在服务器上用C#完成的,还是在浏览器中用JavaScript完成的?如果在服务器上安装C#,那么浏览器的选择对此没有影响。这是在浏览器和服务器上完成的,因为我使用的是asp.net正则表达式验证程序组件,但在浏览器上失败。您最好删除C#和asp.net标记,并添加javascript和ie标记。我也会在浏览器中查看源代码,复制javascript并粘贴到这篇文章中。所有其他正则表达式验证都是使用asp.net本机组件完成的。我希望能够使这一个保持与其他组件相同的格式,以便于将来的维护,当我说“删除标记”时,我指的是这篇文章中的标签,而不是代码中的HTML/ASP.NET标签。您好,谢谢您的回复。我同意你的观点,我的表达很复杂,很可能太复杂了。我做了一个编辑来提供更多的细节。我现在就给你的建议打个比方。对你的表达式做了一些小的编辑(\d*\{(\d+\\d+\-\d+\-\d+\\{(\d+\,)+\d+\}\d*)+)+它现在看起来很好,现在简单易读了。我想在给答案打分之前再做一些测试。