( ^ω^) 初学者・迷子・ロリ幼女はこちらで
_、_
( ,_ノ` ) プロフェッショナルはECMAScript デス 4へ
【前スレ】
JavaScript 3
http://peace.2ch.net/test/read.cgi/tech/1380177260/
【関連スレ】
ECMAScript デス 4
http://peace.2ch.net/test/read.cgi/tech/1325448978/
+ JavaScript の質問用スレッド vol.117 +
http://peace.2ch.net/test/read.cgi/tech/1404146244/
CoffeeScript
http://peace.2ch.net/test/read.cgi/tech/1320949260/
TypeScript part1
http://peace.2ch.net/test/read.cgi/tech/1349187527/
構造化ウェブプログラミング言語Dart2
http://peace.2ch.net/test/read.cgi/tech/1319388343/
Microsoft SkyDrive API
http://peace.2ch.net/test/read.cgi/tech/1385604796/
【MACRO】Google Apps Script 質問スレ【DRIVE】
http://peace.2ch.net/test/read.cgi/tech/1404007623/
【node.js】サーバサイドjavascript 2【Rhino】
http://peace.2ch.net/test/read.cgi/tech/1358937029/
探検
JavaScript 4©2ch.net
2014/12/05(金) 12:19:07.19ID:fmzBASgG
341デフォルトの名無しさん
2019/07/13(土) 23:28:56.86ID:57lWPs8z すいません分かりました。
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
って書いてあったわ。
つまりマッチ結果が空文字だと必ず一文字進めるようになっており、「文頭マッチのフラグを落とす」仕様にはなってない。
この仕様でいいのか?という気もするが、とにかくそうなっているようだ。
お騒がせしました。
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
って書いてあったわ。
つまりマッチ結果が空文字だと必ず一文字進めるようになっており、「文頭マッチのフラグを落とす」仕様にはなってない。
この仕様でいいのか?という気もするが、とにかくそうなっているようだ。
お騒がせしました。
342デフォルトの名無しさん
2019/07/16(火) 20:12:13.23ID:hMJFhr7R というかこれはMDNに注意書きがいる案件だ。
勿論君の手柄にしてくれていいから、誰かやっておいてくれ。
追記は取り敢えず4ヶ所(3文案)か?
1. String.match に、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が結果に含まれないことがあります。」
2. String.replaceに、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が置換されないことがあります。」
3. RegExp.exexとRegExp.testに、
「空文字にマッチした場合、lastIndexが更新されません。(+1されません)
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、
ループ内でマッチ結果の空文字判定を行わないと、無限ループします。」
問題となるケースは、空文字マッチを含む正規表現+空文字マッチ直後にマッチ文字列が来る場合。
具体的には>>341
searchはgマッチ関係ないからセーフ、
splitに関係するケースがあるかは分からない。(ぱっとは思いつかない)
matchAllは知らん。
ちなみに以前 test について文句を言った者だ。これについて対応してくれた人はありがとう。
今回も頼むわ。
なお今確認すると、
> 注目すべきは、別な文字列で検索しても lastIndex がリセットされないことです。
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
とモロに書いてあって素晴らしい。ただこれはもっと赤字とか目立つように書くべきだが。
俺はWeb板は無視しているが、これについてだけは告知貼っておく。
いずれにしてもMDNの更新誰かよろしく。
勿論君の手柄にしてくれていいから、誰かやっておいてくれ。
追記は取り敢えず4ヶ所(3文案)か?
1. String.match に、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が結果に含まれないことがあります。」
2. String.replaceに、
「空文字にマッチした場合、その空文字の次の文字にはマッチしません。
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が置換されないことがあります。」
3. RegExp.exexとRegExp.testに、
「空文字にマッチした場合、lastIndexが更新されません。(+1されません)
このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、
ループ内でマッチ結果の空文字判定を行わないと、無限ループします。」
問題となるケースは、空文字マッチを含む正規表現+空文字マッチ直後にマッチ文字列が来る場合。
具体的には>>341
searchはgマッチ関係ないからセーフ、
splitに関係するケースがあるかは分からない。(ぱっとは思いつかない)
matchAllは知らん。
ちなみに以前 test について文句を言った者だ。これについて対応してくれた人はありがとう。
今回も頼むわ。
なお今確認すると、
> 注目すべきは、別な文字列で検索しても lastIndex がリセットされないことです。
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test
とモロに書いてあって素晴らしい。ただこれはもっと赤字とか目立つように書くべきだが。
俺はWeb板は無視しているが、これについてだけは告知貼っておく。
いずれにしてもMDNの更新誰かよろしく。
レスを投稿する
ニュース
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★4 [蚤の市★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 ★2 [お断り★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- 「だからデビューできないんだよ」やす子、ジュニアへの“不適切発言”が炎上《何がわかる》ファンの逆鱗 [Anonymous★]
- 【テレビ】石破前首相 中国レーダー照射「フェーズ上がってる」と指摘も「日本の世論が激高するのは避ける必要が…」 [少考さん★]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨 [931948549]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨😨 [931948549]
- 【悲報】山里亮太(南海キャンディーズ)さん [329329848]
- もう疲れたよパトラッシュ......をVIPで発言して役6年
- 【高市悲報】日本が🇨🇳輸出規制したフォトレジスト、早速韓国企業が中国に売り込みかけて日本の対抗手段もうなくなるwww [709039863]
- 【なにここ】🏡👊😅👊🏡【すごいなこれ‼】
