我试图匹配这样的jQuery Mobile URL的哈希片段:
matches = window.location.hash.match ///
# # we're interested in the hash fragment
(?:.*/)? # the path; the full page path might be /dir/dir/map.html, /map.html or map.html
# note the path is not captured
(\w+\.html)$ # the name at the end of the string
///
但是,问题在于,已将#符号从已编译的JS文件中的正则表达式中截断了,因为它被视为注释的开始。我知道我可以切换到普通的正则表达式,但是在heregex中可以使用#吗?
最佳答案
以通常的方式进行转义:
matches = window.location.hash.match ///
\# # we're interested in the hash fragment
(?:.*/)? # the path; the full page path might be /dir/dir/map.html, /map.html or map.html
# note the path is not captured
(\w+\.html)$ # the name at the end of the string
///
这将编译为此正则表达式:
/\#(?:.*\/)?(\w+\.html)$/
并且
\#
与JavaScript正则表达式中的#
相同。您还可以使用Unicode转义
\u0023
:matches = window.location.hash.match ///
\u0023 # we're interested in the hash fragment
(?:.*/)? # the path; the full page path might be /dir/dir/map.html, /map.html or map.html
# note the path is not captured
(\w+\.html)$ # the name at the end of the string
///
但是没有多少人会认为
\u0023
是哈希符号,因此\#
可能是一个更好的选择。