【发布时间】:2016-03-28 00:45:09
【问题描述】:
这不是“帮助我构建我的正则表达式”问题之一。我有一个 HTML 表单输入字段,用户可以在其中提供各种格式的地理位置数据。以下正则表达式在 regexr.com 以及我的应用程序中运行良好。但是,我想使用 HTML5 的“模式”参数在提交之前额外验证用户的输入。
((([E|W|N|S](\s)?)?([\-]?[0-1]?[(0-9)]{1,2})[°][ ]?([(0-5)]?[(0-9)]{1})([\.|,][0-9]{1,5})?['][ ]?([0-5]{0,1}[0-9]?(([\.|\,])[0-9]{0,3})?)([\"]|[']{2}){0,1}((\s)?[E|W|N|S])?)|([-]?[1]?[0-9]{1,2}[\.|,][0-9]{1,9}))
关键是这个正则表达式包含一个引号字符(“)。现在,我把这个正则表达式放在我的输入中,如下所示:
<input type="text" pattern = "regex..."...." />
浏览器无法识别此正则表达式,并且根本不进行任何验证,因此显然我需要转义该引用。到目前为止我尝试了什么:
- PHP 的 addlashes() 函数转义了太多字符。
- 我用一个反斜杠转义了引号
这并没有改变任何东西。我用 Chrome 进行了测试,它适用于简单的正则表达式。上面那个显然有点太复杂了。
我知道上面的正则表达式对于匹配坐标并不完美,但是,这里不讨论这个问题。我只是想知道如何正确转义 HTML5 中的模式,因为 Chrome 对该正则表达式没有任何作用。
【问题讨论】: