考慮以下字符串,如何使正則表達式中的前綴和捕獲字符是可選的?
var str = "<%= stylesheet_link_tag 'project/theme-one', media: 'all' if @auth.show? %>"
下面的正則表達式返回一個有效匹配,
str.match(/\<%= stylesheet_link_tag\s+['"]?(.*)['"],.+if(.*)%\>/)
// [
// "<%= stylesheet_link_tag 'project/theme-one', media: 'all' if @auth.show? %>",
// "project/theme-one",
// " @auth.show? "
// ]
但是,它未能與下面的字符串(不如果條件):
var str = "<%= stylesheet_link_tag 'project/theme-one', media: 'all' %>"
// Expected result
// [
// "<%= stylesheet_link_tag 'project/theme-one', media: 'all' if @auth.show? %>",
// "project/theme-one",
// " "
// ]
如何我可以讓if(.*)
的正則表達式的一部分是可選的嗎?
*爲0以上,我認爲這是什麼 「可選」 是指在這種情況下'' – m0skit0
@ m0skit0沒了(如*)。 ,它會給出'[「<%= stylesheet_link_tag'項目/主題一',媒體:'全部'如果@ auth.show?%>」,「項目/主題一」,undefined,undefined]' – codef0rmer
它匹配在我的測試中。你的意思是分組現在是不同的?你沒有問過關於分組。 – m0skit0