1
这不是其中的一个“帮我构建我的正则表达式”的问题。我有一个HTML表单输入字段,用户可以以各种格式提供地理位置数据。以下正则表达式在regexr.com以及我的应用程序中正常工作。但是,我想在提交之前使用HTML5的“模式”参数来额外验证用户的输入。 。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的和addslashes()函数转义字符太多
- 我通过单个反斜线逃脱报价
这并没有改变任何东西。我使用Chrome进行测试,使用简单的正则表达式可以正常工作。上面的那个显然太复杂了。
我知道上面的正则表达式对于匹配坐标来说并不完美,但是,这里不讨论这个问题。我只想知道如何正确地转义HTML5中的模式,因为Chrome不会对该正则表达式做任何事情。
谢谢,这就是解决方案...即使我经常使用htmlentities()来显示数据,它并没有发生在我身上,我可以用它来编码我的正则表达式模式......非常感谢! – user3205494