这不是其中一个“帮我构建我的正则表达式”的问题。我有一个HTML表单输入字段,用户可以在其中提供各种格式的地理位置数据。以下正则表达式在regexr.com以及我的应用程序中正常工作。但是,我想使用HTML5的“pattern”参数在提交之前另外验证用户的输入。
((([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..."...." />
浏览器不识别这个正则表达式并且根本不做任何验证,所以显然我需要逃避这个引用。到目前为止我尝试了什么:
这没有改变任何事情。我测试了Chrome,它可以使用简单的正则表达式。上面的那个显然有点太复杂了。
我知道上面的正则表达式不适合匹配坐标,但是,这里不讨论。我只是想知道如何正确地逃避HTML5中的模式,因为Chrome不会对该正则表达式执行任何操作。
答案 0 :(得分:3)
使用HTML实体:
'
使用'
"
使用"
如果您使用PHP创建正则表达式,则可以使用htmlentities()
使用HTML实体对字符串进行编码。默认情况下,这只会编码双引号,但您可以使用ENT_QUOTES
选项对两种类型的引号进行编码。