REGEX:查找字符串中某些给定特殊字符的正确发生顺序

时间:2013-08-12 07:47:28

标签: javascript regex

我想要一个能够找到

正确出现次序的正则表达式
  

* | 。 | #| '任何HTML元素类型',如'p'或'div'

LIKE

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,但它不起作用

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

好的,我有:

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

问题在于,除非您指定可以捕获的所有可能的html元素,如divspan等,否则它将匹配所有字符串,包括类和ID名称。

希望这无论如何都有帮助。

Regular expression visualization

Edit live on Debuggex