2014-03-05 513 views
0

這個正則表達式來自JQuery,並且「|」意思是「或」,但是哪兩個部分可以選擇?'|'是什麼意思?在這個正則表達式?

/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/

[^>]*$ | #([\w\-]*)$(<[\w\W]+>)[^>]*$ | #([\w\-]*)$)還是別的?

+1

試試看[regexper.com](http://www.regexper.com/#%5E(%3F%3A%5B%5E%23%3C%5D *(%3C%5B%5Cw %5CW%5D%2B%3E)%5B%5E%3E%5D *%24%7C%23(%5B%5CW%5C-5D%*)%24))。 –

回答

0

它是[^#<]*(<[\w\W]+>)[^>]*$#([\w\-]*)$,並且都在非捕獲組中。

/^(?:EXP)$)/ # EXP => A|B 

/^(?:A|B)$)/ # A => [^#<]*(<[\w\W]+>)[^>]*$, B => #([\w\-]*)$ 

/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/ 
+0

爲什麼它需要這個正則表達式中的非捕獲組? – YuC

0

簡單:x|y

匹配要麼xy

例如:/green|red/匹配green applered​​在red apple.

See regular expression on mdn

+0

此答案已被添加到[其他]下的[Stack Overflow Regular Expression FAQ](http://stackoverflow.com/a/22944075/2736496)。 – aliteralmind

0

寫它與縮進多幫助:

^ 
(?: 
    [^#<]* 
    (
    < 
    [\w\W]+ 
    > 
) 
    [^>]* 
    $ 
| 
    # 
    (
    [\w\-]* 
) 
    $ 
) 

你的第二個猜測是正確的。 |的優先級低於連接(即,表達式在彼此之後)。

相關問題