请问大家中文的正则表达式用啥呀,是xregexp么?
发布于 7个月前 作者 kilik52 325 次浏览

要使用微博那样的@功能。 然后发现javascript不支持中文regex。 用了XRegExp之后,发现有很多bug。比如以下正则表达式:

var mentionsRegex = XRegExp('(?<mention>@[\p{L}\p{N}-_]+)', ‘g’);

可以match @神k, 但是match不了 [[[[[[[[[[[@k](/user/k)](/user/k)](/user/k)](/user/k)](/user/k)](/user/k)](/user/k)](/user/k)](/user/k)](/user/k)](/user/k)神 而且文字特别长的时候,会只匹配一部分: 例如 [[[[[[[[[[[[[[[[[[[[[[[[[[[@Joefjfoiwenioenwoibn](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)iowenbioewiognoiergoiweoigoiewngoieriogewiogoiweg](/user/Joefjfoiwenioenwoibniowenbioewiognoiergoiweoigoiewngoieriogewiogoiweg) 只能匹配到: [[[[[[[[[[[[[[[[[[[[[[[[[[@Joefjfoiwenioenwoibn](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)](/user/Joefjfoiwenioenwoibn)

还有就是无法匹配 [[[[[[[[[[[[[@fje-e](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e)](/user/fje-e),但是可以匹配 @姐夫0饿-e

感觉英文开头之后,再混中文就匹配不到了。 我看了cnodejs的源代码,似乎cndoejs是只能用英文作为用户名的。

1 回复

哦,XRegExp没问题,是被之前的测试代码弄混了-_-

回到顶部