0

我想要一个能够找到正确出现顺序的正则表达式

* | . | # | “任何 HTML 元素类型”,例如“p”或“div”

喜欢

var regex = //Some regular expression;

var pattern_1 = "*p.class1#id1.class2";
pattern_1.match(regex); // Should print ['*','p','.','#','.']

var pattern_2 = "p.class1#id1.class2"; 
pattern_2.match(regex); //Should print ['p','.','#','.']

var pattern_3 = "p#id1.class1.class2";
pattern_3.match(regex); //Should print ['p','#','.','.']

var pattern_4 = "#id.class1.class2";
pattern_4.match(regex); //should print ['#id','.','.']

var pattern_5 = "*#id.class1.class2";
pattern_5.match(regex); //should print ['*','#','.','.']

我正在尝试我的运气,regex = /^\*?[a-zA-Z]*|\#|\./g但它不起作用

4

2 回答 2

2

您最好匹配它们各自的值并在之后过滤结果#.

 var regex = /\*|([#.]\w+)|(\w+)/g
 matches = pattern_1.match(regex).map(function(x) { return x.match(/^[#.]/) ? x.charAt(0) : x })

或先删除 id/class 名称,然后匹配:

 matches = pattern_1.replace(/([#.])\w+/g, "$1").match(/[.#*]|\w+/g)
于 2013-08-12T08:15:28.083 回答
0

好吧,我有:

/(\*)|(\.)|([a-zA-Z]+)|(#)/g

这样做的问题是,除非您指定所有可能的 html 元素,您可以像等这样捕获divspan否则它将匹配所有字符串,包括类和 id 名称。

无论如何,希望这会有所帮助。

正则表达式可视化

在 Debuggex 上实时编辑

于 2013-08-12T08:03:55.543 回答