I\'m trying to match the hash fragment of a jQuery Mobile URL like this:
matches = window.location.hash.match ///
# # we\'re in
Escape it in the usual fashion:
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
///
That will compile to this regex:
/\#(?:.*\/)?(\w+\.html)$/
And \#
is the same as #
in a JavaScript regex.
You could also use the Unicode escape \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
///
But not many people are going to recognize \u0023
as a hash symbol so \#
is probably a better choice.
Implementer here. Heregex comments are removed altogether with whitespace using a simple regex (/\s+(?:#.*)?/g
), so any non-whitespace character before #
(or placing it at the very beginning) works.
$ coffee -bcs
/// [#] ///
/// (?:#) ///
///#///
// Generated by CoffeeScript 1.2.1-pre
/[#]/;
/(?:#)/;
/#/;