这是我在 Chrome 控制台下的测试
这是我在 Java 运行的结果

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