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


  * | 。 | #| “任何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运气好,但是没有用

最佳答案

您最好将#.以及它们各自的值进行匹配,然后再过滤结果:

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


或先删除ID /类名,然后匹配:

 matches = pattern_1.replace(/([#.])\w+/g, "$1").match(/[.#*]|\w+/g)

关于javascript - REGEX:查找字符串中某些给定特殊字符的正确出现顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18181848/

10-09 23:44
查看更多