找不到与正则表达式模式匹配的字符串
Unable to find a string matching a regex pattern
在尝试提交表单时,javascript正则表达式验证对于字符串总是错误的。
Regex:-^(([a-zA-Z]:)|(''''{2}''w+)''$?)(''''(''w[''w].*))+(.jpeg|.JPEG|.jpg|.JPG)$
我已经尝试过跟随字符串反对它
abc.jpg,
abc:.jpg,
a:.jpg,
a:asdas.jpg,
哪个字符串可能与此正则表达式匹配
由于字符串中间有$?
,因此此regex不会与任何内容匹配
显然,在结束字符串符号$
上使用可选修饰符?
是不正确的(如果粘贴https://regex101.com/它确实会给你一个错误)。如果javascript解析器忽略错误并保持regex原样,这仍然意味着您将在应该继续的字符串中间匹配一个结束字符串
未经修饰,它本应与'$
(美元符号)匹配,但由于它被写出来了,它不起作用。
如果你想让你的字符串被接受,你可以使用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
如果您只是在寻找一个正则表达式来匹配您所获得的内容,请继续测试它:
('w+:?'w*'.[jpe?gJPE?G]+,)
这应该与你想要的完全匹配。当然,如果你喜欢的话,可以去掉末尾的逗号。
如果删除转义级别,则实际正则表达式为
^(([a-zA-Z]:)|(''{2}'w+)'$?)(''('w['w].*))+(.jpeg|.JPEG|.jpg|.JPG)$
在^
之后,启动第一个管道(([a-zA-Z]:)|(''{2}'w+)'$?)
,该管道匹配一个字母,后跟一个冒号或两个反斜杠,后跟一或多个单词字符,后跟可选文字$
。里面用了一些不必要的括号。
第二部分(''('w['w].*))+
匹配一个反斜杠,后面跟着两个单词字符'w['w]
,这看起来很奇怪,因为它相当于'w'w
(第二个'w
不需要字符类)。后面跟着任意数量的任意字符。这整件事一次或多次。
在(.jpeg|.JPEG|.jpg|.JPG)
的最后一部分中,人们可能忘记了对匹配文字的点进行转义。应使用'.
。该部分可以简化为'.(JPE?G|jpe?g)
。
它会匹配类似的东西
A: '' 12任何东西.JPEG
''''1$''anything.jpg
在regex101中使用它。更好的可读性可能是
^([a-zA-Z]:|''{2}'w+'$?)('''w{2}.*)+'.(jpe?g|JPE?G)$
还要阅读regex101上的解释来理解任何模式,这很有帮助!
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- Regex模式匹配,从Javascript中的字符串中提取时间,结果出乎意料
- Javascript重复模式匹配,然后输出到文本区域
- 查找与模式匹配的所有子字符串
- JavaScript 正则表达式查找与开始和结束模式匹配的所有子字符串
- 在Javascript中测试字符串模式匹配
- 替换字符串中匹配的最后一个模式实例
- 以字符开头、以数字结尾的字符串的模式匹配
- 找不到与正则表达式模式匹配的字符串
- Javascript查找与模式匹配的所有字符串
- 当模式匹配字符串时,Javascript/jQuery可以更快地替代$.inArray
- 只有当模式在整个字符串中匹配时,Regex测试才应该返回true.Javascript
- 如果正则表达式模式匹配,字符串中的粗体字
- Javascript字符串模式匹配给出空结果
- 如何检查字符串是否与带有星号的模式匹配
- Lodash:在字符串的末尾进行模式匹配
- Javascript regex模式匹配多个字符串(AND, OR)对单个字符串
- 对于正则表达式模式,如何确定与模式匹配的最长字符串的长度
- 匹配字符串模式的最简单方法
- 为什么在输出数组中添加空字符串,同时使用javascript中的regex模式匹配字符串