アプリ版:「スタンプのみでお礼する」機能のリリースについて

・ChromeコンソールでRegExp.prototypeすると「/(?:)/」と表示されるのですが、どういう意味でしょうか?
・「?」は直前文字の 0 回か 1 回の出現にマッチ と書いてあったのですが、「:」が分かりません
・「?:」でどういう意味になるのでしょうか
・「()」はキャプチャ?

A 回答 (2件)

他の型が回答されている用に「(?:)」で1つです。

何にもマッチしない空の正規表現と等価です。

RegExp.prototypeはES5.1では空のRegExpオブジェクトということになっています。

""+RegExp() // "/(?:)/"
で分かるように、空のRegExpオブジェクトはRegExp.prototype.toStringを通して結局"/(?:)/"になります。
これはtoString()された時、ちゃんとした正規表現リテラルになったほうが望ましいだろうということからです。
もし"//"だとコメントの用になってしまいます。
因みにChrome等で、/\//が"///"と表示されるのは誤りです。Firefoxの用に"/\//"か、"/\u002F/"を返さないといけません

また、ES6ではRegExp.prototypeは通常のオブジェクトなので、RegExp.prototype.toString()は今のところエラーです。
ここで問題提起がされています
http://esdiscuss.org/topic/standard-builtins-pro …

要するに、このあたりは微妙な問題を抱えている部分ということです。
そんなに気にしないでいいでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>何にもマッチしない空の正規表現と等価
>toString()された時、ちゃんとした正規表現リテラルになったほうが望ましい
・説明大変わかりやすかったです

・リンク先ページ初めて見ましたが、ES仕様について(?)、色々議論されているんですねー

お礼日時:2014/07/10 06:42

とりあえず標準的な解説は以下に…


 http://t32k.me/mol/log/pattern-matching-with-reg …

(?:...) は非記憶のグループかと


prototypeなので何でもOKのような気がしますが、なぜそうなっているのかはどなたか詳しい方の回答をお待ちします。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

・リンク先大変参考になりましたー

お礼日時:2014/07/10 06:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!