JS RegExp中的\ u007F和\ uFFFF

时间:2015-06-25 00:57:37

标签: javascript regex unicode

我在一个试图匹配id和类的JavaScript正则表达式中看到了这一点,那么\u007F\uFFFF匹配的是什么?

var split = require('browser-split');
var tag = "#id.classname";
var classIdSplit = /([\.#]?[a-zA-Z0-9\u007F-\uFFFF_:-]+)/;
var tagParts = split(tag, classIdSplit);

我在virtual-dom库中看到过这个,作者打算用它来分割

"#id.classname"

["", "#id", "", ".classname"]

2 个答案:

答案 0 :(得分:2)

ID selectors的语法#后面紧跟着标识符。

Class selectors的语法.后面紧跟着标识符。

identifier定义为

  

在CSS中,标识符(包括元素名称,类和ID)   selectors)只能包含字符[a-zA-Z0-9]和ISO   10646个字符U + 00A0和更高,加上连字符( - )和   下划线(_);他们不能以数字,两个连字符或a开头   连字符后跟一个数字。标识符也可以包含转义   字符和任何ISO 10646字符作为数字代码(请参阅下一个   项)。

注意:CSS3 allows identifiers to start with two hyphens

因此,该正则表达式不正确地尝试匹配#.后跟identifier

答案 1 :(得分:1)

尝试匹配Unicode基本多语言平面的"Latin-1 Supplement" block是不正确的。

正确的是[\u0080-\u00FF]

比较:http://kourge.net/projects/regexp-unicode-block