无法找到与正则表达式匹配的字符串

时间:2015-10-30 11:40:07

标签: javascript jquery regex

在尝试提交表单时,javascript正则表达式验证对于字符串始终被证明是错误的。

正则表达式: - ^(([a-zA-Z]:)|(\\\\{2}\\w+)\\$?)(\\\\(\\w[\\w].*))+(.jpeg|.JPEG|.jpg|.JPG)$

我尝试过跟随字符串

abc.jpg,
abc:.jpg,
a:.jpg,
a:asdas.jpg,

哪个字符串可以匹配此正则表达式?

3 个答案:

答案 0 :(得分:0)

如果删除转义级别,则实际的正则表达式为

^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+(.jpeg|.JPEG|.jpg|.JPG)$

^启动第一个管道(([a-zA-Z]:)|(\\{2}\w+)\$?)后,它匹配一个alpha后跟一个冒号或两个反斜杠后跟一个或多个单词字符,后跟一个可选的文字$。内部使用了一些不必要的括号。

第二部分(\\(\w[\w].*))+匹配反斜杠,后跟两个单词字符\w[\w],看起来很奇怪,因为它等同于\w\w(不需要第二个{{1}的字符类}})。随后是任何数量的任何角色。整件事一次或多次。

在最后一部分\w,人们可能忘记逃避点以匹配文字。应该使用(.jpeg|.JPEG|.jpg|.JPG)。此部分可以缩减为\.

它会匹配像

这样的东西
  

A:\ 12anything.JPEG

     

\\ 1 $ \ anything.jpg

Play with it at regex101。更好的可读性可能是

\.(JPE?G|jpe?g)

另请阅读有关regex101的说明以了解任何模式,这很有帮助!

答案 1 :(得分:0)

由于字符串中间的$?,此正则表达式不会与任何内容匹配 显然在结束字符串符号?上使用可选修饰符$是不正确的(如果将其粘贴到https://regex101.com/上,它确实会给您一个错误)。如果javascript解析器忽略错误并保持正则表达式,这仍然意味着你将匹配一个字符串中间的结束字符串,该字符串应该继续。
未转义它应该匹配\$(美元符号)但是因为它被写入它将无法工作。

如果您希望不惜任何代价接受您的字符串,您可以使用Firebug或类似的开发人员工具并编辑javascript代码中的字符串(假设没有服务器端检查,并假设它没有错)。如果您忽略$?,则匹配的字符串将为\\\\w\\\\ww.jpg(但由于。未转义,即使\\\\w\\\\ww%jpg匹配)

当然,我写这个答案假设逃避确实是你在问题中展示的那个。如果您需要为正确转义的^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))+(\.jpeg|\.JPEG|\.jpg|\.JPG)$找到匹配的模式,那么您可以使用此工具查找一个http://fent.github.io/randexp.js/(尽管它会找到奇怪的匹配项)。匹配模式为c:\zz.jpg

答案 2 :(得分:0)

如果你只是想找一个正则表达式来匹配你所得到的,请继续测试:

dimshuffle

这应该与您正在寻找的完全匹配。如果您愿意,最后删除可选的逗号。