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

正则表达式如下:
var hyphenateRE = /([^-])([A-Z])/g;
为什么会这样?求解答
这是我在 Chrome 控制台下的测试
这是我在 Java 运行的结果

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