2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

JavaScript 4

345 :デフォルトの名無しさん:2019/07/13(土) 23:28:56.86 ID:57lWPs8z.net
すいません分かりました。

String.match は RegExp[@@match] を読んでて、その中で RegExp.exec を呼んでいる。
RegExp.exec は当然そのまま RegExp.exec を呼んでいる。
だからそのままだと当然挙動は同じになるのだけど、String.matchの場合、
> 4. If matchStr is the empty String, then
> a. Let thisIndex be ? ToLength(? Get(rx, "lastIndex")).
> b. Let nextIndex be AdvanceStringIndex(S, thisIndex, fullUnicode).
> c. Perform ? Set(rx, "lastIndex", nextIndex, true).
https://tc39.es/ecma262/#sec-regexpbuiltinexec
って書いてあったわ。
つまりマッチ結果が空文字だと必ず一文字進めるようになっており、「文頭マッチのフラグを落とす」仕様にはなってない。
この仕様でいいのか?という気もするが、とにかくそうなっているようだ。
お騒がせしました。

152 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver.24052200