这是我在 Chrome 控制台下的测试
这是我在 Java 运行的结果
正则表达式如下:
var hyphenateRE = /([^-])([A-Z])/g;
为什么会这样?求解答
1
laoyur 2016-10-07 16:04:33 +08:00
虽然我对具体的 api 不熟,但你显然两个环境用的是不同的 API ,一个是 test(),一个是 matches()
|
2
hronro 2016-10-07 16:07:47 +08:00 2
这是因为在 JS 中, RegExp 实例拥有的 test 方法,会从上次匹配字符串结束的地方开始匹配。第一次匹配完"-AB",后,第二次匹配会从'B'之后再开始匹配,自然就匹配不到了
|
3
w88975 2016-10-07 16:26:03 +08:00 2
每次正则匹配完 加一个
hyphenateRE.lastIndex = 0 |
4
w88975 2016-10-07 16:26:53 +08:00
hyphenateRE.test('-AB');
hyphenateRE.lastIndex = 0; hyphenateRE.test('-AB'); |
5
ZhaoMiing 2016-10-07 16:29:25 +08:00 via iPhone
ls+1
|
6
prefere 2016-10-07 18:09:08 +08:00
g 修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
http://www.w3school.com.cn/jsref/jsref_regexp_g.asp 把 g 去掉,这样无论多少次都是 true var hyphenateRE = /([^-])([A-Z])/; |