jquery - JavaScript regExp returns "null" -
i'm making regular look match li in 1 ul in 1 textarea. everytime click button, returns value of null.
here's fiddle.
here's function(){...} looks like:
function doit() { var input = document.getelementbyid("input"); var patt = /^<ol>{1}\n+\s?[<li>\w+<\/li>]+\n+<\/ol>{1}$/; alert(input.value.match(patt)); } i don't know why patt doesn't work...
here's logic (in own words):
^ — starting point <ol>{1} — 1 <ol> \n+ — 1 or more new lines \s? — 0 or more (optional) spaces [<li>\w+<\/li>]+ — 1 or more <li></li> contains 1 or more characters. \n+ — 1 or more new lines <\/ol>{1} — 1 </ol> $ — ending point i want [<li>\w+<\/li>]+ homecoming 1 or more of like: <li>hello world :)</li> basically, can in between <li></li>.
here pattern does:
^ — maches origin of string <ol — matches "<ol" >{1} — matches ">" 1 time \n+ — matches 1 or more new lines \s? — matches 1 whitespace character (optional) [<li>\w+<\/li>]+ — matches of characters in "<>a-za-z_/" 1 or more times \n+ — matches 1 or more new lines <\/ol — matches "</ol" >{1} — matches ">" 1 time $ — matches end of string as match origin , end of string, pattern have match entire string, not part of string.
if set in textarea, pattern match it:
<ol> <li>helloworld</li><li>hellohowareyou</li><li>good</li> </ol> you rather want this:
var patt = /<ol>\s*(?:<li>[\w !:)]+<\/li>\s*)+<\/ol>/; explanation:
<ol> — matches "<ol>" \s* — matches 0 or more whitespace characters (including newlines) (?: — starts non-capturing grouping <li> — matches "<li>" [\w+ !:)]+ — matches of characters in "a-za-z_ !:)" 1 or more times <\/li> — matches "</li>" \s* — matches 0 or more whitespace characters ) — ends grouping + — repeats grouping 1 or more times \n+ — matches 1 or more new lines <\/ol> — matches "</ol>" demo: http://jsfiddle.net/3jthn/2/
javascript jquery regex function methods
No comments:
Post a Comment