譛ャ鬆√�逶ョ谺。 逶ョ谺。

15.10 RegExp (豁」隕剰。ィ迴セ) 繧ェ繝悶ず繧ァ繧ッ繝� (RegExp (Regular Expression) Objects)

RegExp 繧ェ繝悶ず繧ァ繧ッ繝医�縲∵ュ」隕剰。ィ迴セ縺ィ髢「騾」縺吶k繝輔Λ繧ー縺ァ讒区�縺輔l繧九€�

NOTE 豁」隕剰。ィ迴セ縺ョ譖ク蠑上→讖溯�縺ッ縲� Perl5 繝励Ο繧ー繝ゥ繝溘Φ繧ー險€隱槭�豁」隕剰。ィ迴セ繧呈ィ。縺励※菴懊i繧後k縲�

15.10.1 繝代ち繝シ繝ウ (Patterns)

RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ッ縲∝�蜉帙ヱ繧ソ繝シ繝ウ譁�ュ怜�縺ォ荳玖ィ倥�譁�ウ輔r驕ゥ逕ィ縺吶k縲よ枚豕輔′譁�ュ怜�繧� Pattern 縺ョ 螻暮幕縺ィ縺励※隗」驥医〒縺阪↑縺代l縺ー縲√お繝ゥ繝シ縺檎匱逕溘☆繧九€�

Syntax
Pattern ::
Disjunction
Disjunction ::
Alternative
Alternative | Disjunction
Alternative ::
[empty]
Alternative Term
Term ::
Assertion
Atom
Atom Quantifier
Assertion ::
^
$
\ b
\ B
Quantifier ::
QuantifierPrefix
QuantifierPrefix ?
QuantifierPrefix ::
*
+
?
{ DecimalDigits }
{ DecimalDigits , }
{ DecimalDigits , DecimalDigits }
Atom ::
PatternCharacter
.
\ AtomEscape
CharacterClass
( Disjunction )
( ? : Disjunction )
( ? = Disjunction )
( ? ! Disjunction )
PatternCharacter :: SourceCharacter but not any of:
^ $ \ . * + ? ( ) [ ] { } |
AtomEscape ::
DecimalEscape
CharacterEscape
CharacterClassEscape
CharacterEscape ::
ControlEscape
c ControlLetter
HexEscapeSequence
UnicodeEscapeSequence
IdentityEscape
ControlEscape :: one of
f n r t v
ControlLetter :: one of
a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
IdentityEscape ::
SourceCharacter but not IdentifierPart
DecimalEscape ::
DecimalIntegerLiteral [lookahead ( DecimalDigit]
CharacterClassEscape :: one of
d D s S w W
CharacterClass ::
[ [lookahead ∉ {^} ] ClassRanges ]
[ ^ ClassRanges ]
ClassRanges ::
[empty]
NonemptyClassRanges
NonemptyClassRanges ::
ClassAtom
ClassAtom NonemptyClassRangesNoDash
ClassAtom - ClassAtom ClassRanges
NonemptyClassRangesNoDash ::
ClassAtom
ClassAtomNoDash NonemptyClassRangesNoDash
ClassAtomNoDash - ClassAtom ClassRanges
ClassAtom ::
-
ClassAtomNoDash
ClassAtomNoDash ::
SourceCharacter but not one of \ ] -
\ ClassEscape
ClassEscape ::
DecimalEscape
b
CharacterEscape
CharacterClassEscape

15.10.2 繝代ち繝シ繝ウ縺ョ諢丞袖 (Pattern Semantics)

豁」隕剰。ィ迴セ繝代ち繝シ繝ウ縺ッ縲∽ク九↓霑ー縺ケ繧句�逅�r逕ィ縺�k蜀�Κ髢「謨ー縺ォ螟画鋤縺輔l繧九€ょョ溯」��縲∝酔縺倡オ先棡繧貞セ励i繧後k縺ェ繧峨�縲∽ク九↓霑ー縺ケ繧九b縺ョ繧医j繧ゅh繧雁柑邇��縺�>繧「繝ォ繧エ繝ェ繧コ繝�縺ョ莉墓ァ倥′謗ィ螂ィ縺輔l繧九€�

15.10.2.1 陦ィ險俶ウ� (Notation)

莉・荳九�隱ャ譏弱〒縺ッ縲∵ャ。縺ョ螟画焚繧堤畑縺�k:

  • Input 縺ッ縲∵ュ」隕剰。ィ迴セ繝代ち繝シ繝ウ縺ォ繧医j繝槭ャ繝√&繧後※縺�k譁�ュ怜�縺ァ縺ゅk縲り。ィ險� input[n] 縺ッ input 縺ョ n 逡ェ逶ョ縺ョ譁�ュ励r諢丞袖縺吶k縲� n 縺ョ遽�峇縺ッ 0 縺九i InputLength -1 縺セ縺ァ縺ァ縺ゅk縲�
  • InputLength 縺ッ縲� Input 譁�ュ怜�縺ョ譁�ュ玲焚縺ァ縺ゅk縲�
  • NCapturingParens 縺ッ縲√ヱ繧ソ繝シ繝ウ蜀��蟾ヲ謐墓拷諡ャ蠑ァ縺ョ謨ー縺ョ邱乗焚 (縺吶↑繧上■ Atom :: ( Disjunction ) 逕滓�隕丞援縺悟ア暮幕縺輔l繧句屓謨ー縺ョ邱乗焚) 縺ァ縺ゅk縲ょキヲ謐墓拷諡ャ蠑ァ縺ッ縲� Atom :: ( Disjunction ) 逕滓�隕丞援縺ョ ( 邨らォッ險伜捷縺ォ繧医j繝槭ャ繝√&繧後k縲∽ササ諢上� ( 繝代ち繝シ繝ウ譁�ュ励〒縺ゅk縲�
  • IgnoreCase 縺ッ縲� RegExp 繧ェ繝悶ず繧ァ繧ッ繝医� ignoreCase 繝励Ο繝代ユ繧」縺ョ險ュ螳壹〒縺ゅk縲�
  • Multiline 縺ッ縲� RegExp 繧ェ繝悶ず繧ァ繧ッ繝医� multiline 繝励Ο繝代ユ繧」縺ョ險ュ螳壹〒縺ゅk縲�

縺輔i縺ォ縲∽サ・荳九�隱ャ譏弱〒縺ッ縲∵ャ。縺ョ蜀�Κ繝��繧ソ讒矩€�繧堤畑縺�k:

  • CharSet 縺ッ縲∵枚蟄励�謨ー蟄ヲ逧�寔蜷医〒縺ゅk縲�
  • State 縺ッ (endIndex, captures) 縺ョ繝壹い縺ョ荳ヲ縺ウ縺ァ縲� endIndex 繧呈紛謨ー縲� captures 繧� NCapturingParens 蛟、縺ョ蜀�Κ驟榊�縺ィ縺吶k縲� State 縺ッ縲∵ュ」隕剰。ィ迴セ縺ョ繝槭ャ繝√Φ繧ー繧「繝ォ繧エ繝ェ繧コ繝�縺ォ縺翫>縺ヲ驛ィ蛻��繝�メ縺ョ迥カ諷九r陦ィ縺吶�縺ォ菴ソ逕ィ縺輔l繧九€� endIndex 縺ッ縲√◎縺ョ譎らせ縺ァ繝代ち繝シ繝ウ縺ォ繝槭ャ繝√☆繧区怙蠕後�蜈・蜉帶枚蟄励�繧、繝ウ繝�ャ繧ッ繧ケ + 1 縺ァ縺ゅj縲� captures 縺ッ謐墓拷諡ャ蠑ァ縺ョ邨先棡繧剃ソ晄戟縺吶k縲� captures 縺ョ n 逡ェ逶ョ縺ョ隕∫エ�縺ッ縲∵黒謐画峡蠑ァ縺ョ n 逡ェ逶ョ縺ョ髮�粋縺ォ繧医▲縺ヲ蜿門セ励&繧後k蛟、繧定。ィ縺呎枚蟄怜�縺ァ縺ゅj縲∵黒謐画峡蠑ァ縺ョ n 逡ェ逶ョ縺ョ髮�粋縺後∪縺�螻翫>縺ヲ縺�↑縺�↑繧峨� undefined 縺ァ縺ゅk縲ゅヰ繝�け繝医Λ繝�く繝ウ繧ー縺ョ縺溘a縲∝、壹¥縺ョ state 縺後�繝�メ繝ウ繧ー蜃ヲ逅�俣縺�▽縺ァ繧ゆスソ逕ィ縺輔l縺ヲ繧医>縲�
  • MatchResult 縺ッ縲� State 縺ァ縺ゅk縺九€√∪縺溘�繝槭ャ繝√↓螟ア謨励@縺溘%縺ィ繧堤、コ縺咏音谿翫ヨ繝シ繧ッ繝ウ failure 縺ァ縺ゅj縲√←縺。繧峨°荳€譁ケ縺ァ縺ゅk縲�
  • Continuation 髢「謨ー縺ッ縲∝�驛ィ繧ッ繝ュ繝シ繧ク繝」 (縺吶↑繧上■縲∝シ墓焚縺梧里縺ォ蛟、縺ォ邨仙粋縺輔l縺ヲ縺�k蜀�Κ髢「謨ー) 縺ァ縺ゅj縲� 1 蛟九�蠑墓焚 State 繧偵→繧顔オ先棡 MatchResult 繧定ソ斐☆縲ょ�驛ィ繧ッ繝ュ繝シ繧ク繝」縺後€√◎縺ョ繧ッ繝ュ繝シ繧ク繝」繧堤函謌舌☆繧矩未謨ー縺ォ邨仙粋縺輔l縺溷、画焚繧貞盾辣ァ縺吶k縺ェ繧峨�縲√け繝ュ繝シ繧ク繝」縺御スソ逕ィ縺吶k縺ョ縺ッ繧ッ繝ュ繝シ繧ク繝」縺檎函謌舌&繧後◆縺ィ縺阪↓縺昴l繧峨�螟画焚縺梧戟縺」縺ヲ縺�◆蛟、縺ァ縺ゅk縲� continuation 縺ッ縲∝シ墓焚 State 縺ァ荳弱∴繧峨l繧倶クュ髢鍋憾諷九〒髢句ァ九@縺ヲ縲∝�蜉帶枚蟄怜�縺ォ蟇セ縺吶k繝代ち繝シ繝ウ縺ョ谿九j縺ョ驛ィ蛻� (繧ッ繝ュ繝シ繧ク繝」縺ョ邨仙粋貂医∩蠑墓焚縺ァ迚ケ螳壹&繧後k) 縺ォ繝槭ャ繝√r隧ヲ縺ソ繧九€ゅ�繝�メ縺ォ謌仙粥縺励◆縺ェ繧峨�縲� continuation 縺ッ縺昴l縺ォ驕斐@縺滓怙蠕後� State 繧定ソ斐☆; match 縺ォ螟ア謨励↑繧峨�縲� continuation 縺ッ failure 繧定ソ斐☆縲�
  • Matcher 髢「謨ー縺ッ縲� 2 蛟九�蠑墓焚 -- State 縺ィ Continuation -- 繧偵→繧句�驛ィ繧ッ繝ュ繝シ繧ク繝」縺ァ縲∫オ先棡 MutchResult 繧定ソ斐☆縲� matcher 縺ッ縲∝シ墓焚 State 縺ァ荳弱∴繧峨l繧倶クュ髢鍋憾諷九°繧蛾幕蟋九@縺ヲ縲∝�蜉帶枚蟄怜�縺ォ蟇セ縺励※繝代ち繝シ繝ウ縺ョ荳ュ螟ョ縺ョ驛ィ蛻�ヱ繧ソ繝シ繝ウ (繧ッ繝ュ繝シ繧ク繝」縺ョ邨仙粋貂医∩蠑墓焚縺ァ迚ケ螳壹&繧後k) 縺ォ繝槭ャ繝√r隧ヲ縺ソ繧九€ょシ墓焚 Continuation 縺ッ縲√ヱ繧ソ繝シ繝ウ縺ョ谿九j縺ォ繝槭ャ繝√&縺帙k繧ッ繝ュ繝シ繧ク繝」縺ァ縺ェ縺代l縺ー縺ェ繧峨↑縺�€よ眠縺励> State 繧貞セ励k縺溘a縺ョ繝代ち繝シ繝ウ縺ョ驛ィ蛻�ヱ繧ソ繝シ繝ウ縺ョ繝槭ャ繝√Φ繧ー縺ョ蠕後€� matcher 縺ッ縺昴�迥カ諷九�荳翫↓ Cantinuation 繧貞他蜃コ縺励€√ヱ繧ソ繝シ繝ウ縺ョ谿九j縺後≧縺セ縺上�繝�メ縺ァ縺阪k縺九ユ繧ケ繝医☆繧九€ゅ�繝�メ縺ァ縺阪k縺ェ繧峨� matcher 縺ッ continuation 縺ォ霑斐&繧後◆迥カ諷九r霑斐☆; 縺ァ縺阪↑縺�↑繧峨� matcher 縺ッ縲∵�蜉溘☆繧九°縲√∪縺溘�蜈ィ縺ヲ縺ョ蜿ッ閭ス諤ァ繧偵▽縺九>蟆ス縺上☆縺セ縺ァ縲� Continuation 繧堤ケー霑斐@蜻シ蜃コ縺励€√◎縺ョ驕ク謚樒せ縺ァ逡ー縺ェ繧矩∈謚槭r隧ヲ縺励※繧医>縲�
  • AssertionTester 髢「謨ー縺ッ縲∝シ墓焚 State 繧偵→繧句�驛ィ繧ッ繝ュ繝シ繧ク繝」縺ァ縲∫オ先棡 boolean 繧定ソ斐☆縲� assertion 繝�せ繧ソ繝シ縺ッ縲∝�蜉帶枚蟄怜�縺ョ迴セ蝨ィ縺ョ菴咲スョ縺ォ蟇セ縺吶k迚ケ谿頑擅莉カ (繧ッ繝ュ繝シ繧ク繝」縺ョ邨仙粋貂医∩蠑墓焚縺ァ迚ケ螳壹&繧後k) 繧偵ユ繧ケ繝医@縲∵擅莉カ縺ォ繝槭ャ繝√☆繧後� true 縲√�繝�メ縺励↑縺代l縺ー false 繧定ソ斐☆縲�
  • EscapeValue 縺ッ縲∵枚蟄励∪縺溘�謨エ謨ー縺ァ縺ゅk縲� EscapeValue 繧堤畑縺�※ DecimalEscape 繧ィ繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ縺ョ隗」驥医r縺ゅi繧上☆: 譁�ュ� ch 縺ッ縲√お繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ縺梧枚蟄� ch 縺ィ縺励※隗」驥医&繧後k縺薙→繧呈э蜻ウ縺励€∽ク€譁ケ謨エ謨ー n 縺ッ縲√お繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ縺� n 逡ェ逶ョ縺ョ謐墓拷諡ャ蠑ァ髮�粋縺ョ蠕梧婿蜿ら�縺ィ縺励※隗」驥医&繧後k縺薙→繧呈э蜻ウ縺吶k縲�

15.10.2.2 Pattern

逕滓�隕丞援 Pattern :: Disjunction 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Disjunction 繧定ゥ穂セ。縺励€� Matcher m 繧貞叙蠕励☆繧九€�
  2. 蜀�Κ繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%繧後� 2 蛟九�蠑墓焚縲∵枚蟄怜� str 縺ィ謨エ謨ー index 繧偵→繧翫€∵ャ。繧貞ョ溯。後☆繧�:
    1. Input 繧剃ク弱∴繧峨l縺滓枚蟄怜� str 縺ィ縺吶k縲ゅ%縺ョ螟画焚縺ッ縲�繧サ繧ッ繧キ繝ァ繝ウ 15.10.2 蜀��髢「謨ー繧帝€壹@縺ヲ菴ソ逕ィ縺輔l繧九€�
    2. InputLength 繧� Input 縺ョ髟キ縺輔→縺吶k縲ゅ%縺ョ螟画焚縺ッ縲�繧サ繧ッ繧キ繝ァ繝ウ 15.10.2 蜀��髢「謨ー繧帝€壹@縺ヲ菴ソ逕ィ縺輔l繧九€�
    3. c 繧偵€∵�蜉溘� MatchResult 縺ィ縺励※蠑墓焚 State 繧貞クク縺ォ霑斐☆ Continuation 縺ィ縺吶k縲�
    4. cap 繧偵€� 1 縺九i NCapturingParens 縺セ縺ァ縺ョ豺サ縺亥ュ励r謖√▽ NCapturingParens 蛟九� undefined 蛟、 縺ョ蜀�Κ驟榊�縺ィ縺吶k縲�
    5. x 繧� State (index, cap) 縺ィ縺吶k縲�
    6. m(x, c) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ (Informative comment): Pattern 縺ッ蜀�Κ髢「謨ー蛟、縺ォ隧穂セ。 ("繧ウ繝ウ繝代う繝ォ") 縺輔l繧九€� RegExp.prototype.exec 縺後%縺ョ髢「謨ー繧帝←逕ィ縺ァ縺阪k縺ョ縺ッ縲∵枚蟄怜�縺ィ縲∵枚蟄怜�蜀�Κ縺ョ繧ェ繝輔そ繝�ヨ縺ァ縲√◎繧後�譁�ュ怜�蜀�Κ縺ョ縺昴�蜴ウ蟇�↑繧ェ繝輔そ繝�ヨ縺ァ髢句ァ九@縺ヲ繝代ち繝シ繝ウ縺後�繝�メ縺ァ縺阪k縺九←縺�°繧呈アコ螳壹☆繧九b縺ョ縺ァ縺ゅk縲� 縺昴@縺ヲ縲√�繝�メ縺吶k縺ェ繧峨�縲√◎繧後�謐墓拷諡ャ蠑ァ縺ョ蛟、縺ィ縺ェ繧九b縺ョ縺ァ縺ゅk縲� 繧サ繧ッ繧キ繝ァ繝ウ 15.10.2 縺ョ繧「繝ォ繧エ繝ェ繧コ繝�縺ッ縲√さ繝ウ繝代う繝ォ縺吶k繝代ち繝シ繝ウ縺御セ句、� SyntaxError 繧呈兜縺偵※繧ゅh縺�h縺�↓險ュ險医&繧後k; 荳€譁ケ縲√ヱ繧ソ繝シ繝ウ縺御ク€譌ヲ繧ウ繝ウ繝代う繝ォ縺輔l繧九→縲∵枚蟄怜�蜀��繝槭ャ繝√r讀懃エ「縺吶k邨先棡縺ョ髢「謨ー縺ョ驕ゥ逕ィ縺ッ縲∽セ句、悶r謚輔£繧九%縺ィ縺悟�譚・縺ェ縺� (out-of-memory 縺ェ縺ゥ縲√←縺薙〒繧ら匱逕溘@縺�k莉サ諢上�繝帙せ繝亥ョ夂セゥ縺ョ萓句、悶r髯、縺�)縲�

15.10.2.3 Disjunction

逕滓�隕丞援 Disjunction :: Alternative 縺ョ隧穂セ。縺ッ縲� Alternative 繧定ゥ穂セ。縺励※蜿門セ励@縺� Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 Disjunction :: Alternative | Disjunction 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Alternative 繧定ゥ穂セ。縺� Matcher m1 繧貞叙蠕励☆繧九€�
  2. Disjunction 繧定ゥ穂セ。縺� Matcher m2 繧貞叙蠕励☆繧九€�
  3. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%繧後� 2 蛟九�蠑墓焚縲� State x 縺ィ Cantinuation x 繧偵→繧翫€∵ャ。繧貞ョ溯。後☆繧�:
    1. m1(x, c) 繧貞他蜃コ縺励€∫オ先棡繧� r 縺ィ縺吶k縲�
    2. r 縺� failure 縺ァ縺ェ縺�↑繧峨�縲� r 繧定ソ斐☆縲�
    3. m2(x, c) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ: 豁」隕剰。ィ迴セ貍皮ョ怜ュ� | 縺ッ 2 蛟九�莉」譖ソ繧貞玄蛻�k縲ゅヱ繧ソ繝シ繝ウ縺ッ縺セ縺壼キヲ縺ョ Alternative (蠕後↓豁」隕剰。ィ迴セ縺檎カ壹¥) 縺ョ繝槭ャ繝√r隧ヲ陦後☆繧�; 螟ア謨励@縺溘↑繧峨�縲∝承縺ョ Disjunction (蠕後↓豁」隕剰。ィ迴セ縺檎カ壹¥) 縺ョ繝槭ャ繝√r隧ヲ陦後☆繧九€ょキヲ縺ョ Alternative, 蜿ウ縺ョ Disjunction, 邯壹″蜈ィ縺ヲ縺碁∈謚樒せ繧呈戟縺、縺ェ繧峨�縲∫カ壹″縺ョ蜈ィ縺ヲ縺ョ驕ク謚櫁い縺ッ蟾ヲ縺ョ Alternative 蜀��谺。縺ョ驕ク謚櫁い荳翫∈縺ョ遘サ蜍募燕縺ォ隧ヲ陦後&繧後k縲ょキヲ縺ョ Alternative 蜀��驕ク謚櫁い繧剃スソ縺��縺」縺溘↑繧峨�縲∝承縺ョ Disjunction 縺悟キヲ縺ョ Alternative 縺ョ莉」繧上j縺ォ隧ヲ陦後&繧後k縲� | 縺ォ繧医j繧ケ繧ュ繝��縺輔l縺溘ヱ繧ソ繝シ繝ウ謌仙�蜀�Κ縺ョ莉サ諢上�謐墓拷諡ャ蠑ァ縺ッ縲∵枚蟄怜�縺ョ莉」繧上j縺ォ undefined 蛟、繧堤函謌舌☆繧九€ゅ▽縺セ繧翫€∽セ九∴縺ー

/a|ab/.exec("abc")

縺ッ邨先棡 "a" 繧定ソ斐@縲� "ab" 縺ッ霑斐&縺ェ縺�€ゅb縺」縺ィ險€縺医�

/((a)|(ab))((c)|(bc))/.exec("abc")

縺ッ莉・荳九�驟榊�

["abc", "a", "a", undefined, "bc", undefined, "bc"]

繧定ソ斐@縲�

["abc", "ab", undefined, "ab", "c", "c", undefined]

縺ッ霑斐&縺ェ縺�€�

15.10.2.4 Alternative

逕滓�隕丞援 Alternative :: [empty] 縺ョ隧穂セ。縺ッ縲`atcher 繧定ソ斐☆縲ゅ%縺ョ Matcher 縺ッ 2 蛟九�蠑墓焚 State x 縺ィ Continuation c 繧偵→繧翫€� c(x) 縺ョ邨先棡繧定ソ斐☆縲�

逕滓�隕丞援 Alternative :: Alternative Term 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Alternative 繧定ゥ穂セ。縺励€� Matcher m1 繧貞セ励k縲�
  2. Term 繧定ゥ穂セ。縺励€� Matcher m2 繧貞セ励k縲�
  3. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 2 蛟九�蠑墓焚 State x 縺ィ Continuation c 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    1. Continuation d 繧堤函謌舌☆繧九€ゅ%繧後� State 蠑墓焚縺ォ y 繧偵→繧� m2(y, c) 縺ョ邨先棡繧定ソ斐☆
    2. m1(x, d) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ: 騾」邯壹☆繧� Term 縺ッ縲∝�蜉帶枚蟄怜�縺ョ騾」邯壹☆繧矩Κ蛻��蜷梧凾繝槭ャ繝√r隧ヲ縺ソ繧九€� 蟾ヲ縺ョ Alternative, 蜿ウ縺ョ Term, 邯壹″縺ョ豁」隕剰。ィ迴セ縺ョ蜈ィ縺ヲ縺碁∈謚槭�繧、繝ウ繝医r謖√▽縺ェ繧峨�縲� 邨先棡縺ョ蜈ィ驕ク謚櫁い縺悟承縺ョ Term 縺ョ谺。縺ョ驕ク謚櫁い縺ォ遘サ蜍輔☆繧句燕縺ォ讀懈渊縺輔l縲� 蜿ウ縺ョ Term 縺ョ蜈ィ縺ヲ縺ョ驕ク謚櫁い縺悟キヲ縺ョ Alternative 縺ョ谺。縺ョ驕ク謚櫁い縺ォ遘サ蜍輔☆繧句燕縺ォ讀懈渊縺輔l繧九€�

15.10.2.5 Term

逕滓�隕丞援 Term :: Assertion 縺ョ隧穂セ。縺ッ 2 蛟九�蠑墓焚 State x 縺ィ a Continuation c 繧貞叙繧句�驛ィ Matcher 繧ッ繝ュ繝シ繧ク繝」 繧定ソ斐☆縲ゅ%縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ谺。繧貞ョ溯。後☆繧�:

  1. Assertion 繧定ゥ穂セ。縺励€� AssertionTester t 繧貞叙蠕励☆繧九€�
  2. t(x) 繧貞他縺ウ蜃コ縺励€∫オ先棡縺ョ boolean 蛟、繧� r 縺ィ縺吶k縲�
  3. r 縺� false 縺ェ繧峨�縲� failure 繧定ソ斐☆縲�
  4. c(x) 繧貞他縺ウ蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

逕滓�隕丞援 Term :: Atom 縺ョ隧穂セ。縺ッ縲� Atom 繧定ゥ穂セ。縺励※ Matcher 繧貞叙蠕励@縲√◎縺ョ Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 Term :: Atom Quantifier 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Atom 繧定ゥ穂セ。縺励€� Matcher m 繧貞叙蠕励☆繧九€�
  2. Quantifier 繧定ゥ穂セ。縺励€� 3 縺、縺ョ邨先棡:謨エ謨ー min, 謨エ謨ー (縺セ縺溘� ∞) max, boolean 蛟、 greedy 繧貞叙蠕励☆繧九€�
  3. max 縺梧怏髯先焚縺ァ min 譛ェ貅€縺ェ繧峨�縲∽セ句、� SyntaxError 繧呈兜縺偵k縲�
  4. parenIndex 繧偵€∵ュ」隕剰。ィ迴セ蜈ィ菴薙〒縺薙�逕滓�隕丞援螻暮幕縺ョ Term 縺ョ蟾ヲ縺ォ逋コ逕溘☆繧句キヲ謐墓拷諡ャ蠑ァ縺ョ謨ー縺ィ縺吶k縲� 縺薙l縺ッ縲√%縺ョ逕滓�隕丞援縺ョ Term 縺ォ蜈郁。後☆繧� Atom :: ( Disjunction ) 逕滓�隕丞援縺ョ螻暮幕邱乗焚縺ォ縲√%縺ョ Term 繧帝哩縺倥※縺�k Atom :: ( Disjunction ) 逕滓�隕丞援縺ョ邱乗焚繧貞刈縺医◆謨ー縺ァ縺ゅk縲�
  5. parenCount 繧� 縺薙�逕滓�隕丞援縺ョ Atom 螻暮幕蜀��蟾ヲ謐墓拷諡ャ蠑ァ縺ョ謨ー縺ィ縺吶k縲ゅ%繧後�縲√%縺ョ逕滓�隕丞援縺ョ Atom 縺ォ髢峨§繧峨l繧� Atom :: ( Disjunction ) 逕滓�隕丞援縺ョ邱乗焚縺ァ縺ゅk縲�
  6. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 2 蛟九�蠑墓焚 State x 縺ィ a Continuation c 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    1. RepeatMatcher(m, min, max, greedy, x, c, parenIndex, parenCount) 繧貞他縺ウ蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

蜀�Κ陬懷勧髢「謨ー RepeatMatcher 縺ッ 8 蛟九�繝代Λ繝。繧ソ: Matcher m, 謨エ謨ー min, 謨エ謨ー (or ∞) max, boolean 蛟、 greedy, State x, Continuation c, 謨エ謨ー parenIndex, 謨エ謨ー parenCount, 繧貞叙繧九€ゅ◎縺励※谺。縺ョ繧医≧縺ォ謖ッ闊槭≧:

  1. max 縺� zero 縺ェ繧峨�縲� c(x) 繧貞他蜃コ縺励◎縺ョ邨先棡繧定ソ斐☆縲�
  2. 蜀�Κ Continuation 繧ッ繝ュ繝シ繧ク繝」 d 繧堤函謌舌☆繧九€ゅ%縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 1 蛟九�蠑墓焚 State y 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    • 1. min 縺� zero 縺ァ縺ゅj縲√°縺、 y 縺ョ endIndex 縺� x 縺ョ endIndex 縺ィ遲峨@縺�↑繧峨�縲� failure 繧定ソ斐☆縲�
    • 2. min 縺� zero 縺ェ繧峨�縲[in2 繧� zero 縺ィ縺吶k; 縺昴≧縺ァ縺ェ縺代l縺ー min2 繧� min-1 縺ィ縺吶k縲�
    • 3. max 縺� ∞ 縺ェ繧峨�縲[ax2 繧� ∞ 縺ィ縺吶k; 縺昴≧縺ァ縺ェ縺代l縺ー max2 繧� max-1 縺ィ縺吶k縲�
    • 4. RepeatMatcher(m, min2, max2, greedy, y, c, parenIndex, parenCount) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�
  3. cap 繧� x 縺ョ captures 蜀�Κ驟榊�縺ョ fresh copy 縺ィ縺吶k縲�
  4. parenIndex < k 縺九▽ k ≤ parenIndex+parenCount 繧呈コ€縺溘☆謨エ謨ー k 縺ョ縺昴l縺槭l縺ォ縺、縺�※縲� cap[k] 繧� undefined 縺ォ險ュ螳壹☆繧九€�
  5. e 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
  6. xr 繧� State (e, cap) 縺ィ縺吶k縲�
  7. min 縺� 0 莉・螟悶↑繧峨�縲� m(xr, d) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�
  8. greedy 縺� true 縺ェ繧峨�縲√せ繝�ャ繝� 12 縺ク縲�
  9. c(x) 繧貞他蜃コ縺励€� z 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  10. z 縺� failure 縺ァ縺ェ縺�↑繧峨�縲� z 繧定ソ斐☆縲�
  11. m(xr, d) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�
  12. m(xr, d) 繧貞他蜃コ縺励€� z 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
  13. z 縺� failure 縺ァ縺ェ縺�↑繧峨�縲� z 繧定ソ斐☆縲�
  14. c(x) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ: Quantifier 縺ョ邯壹¥ Atom 縺ッ縲� Quantifier 縺ァ謖�ョ壹&繧後◆蝗樊焚縺�縺醍ケー繧願ソ斐&繧後k縲る㍼謖�ョ壼ュ舌�雋ェ谺イ縺ァ縺ェ縺上☆繧九%縺ィ繧ゅ〒縺阪k縲ゅ◎縺ョ蝣エ蜷医€∵峩縺ェ繧句セ檎カ壹�繝槭ャ繝√r陦後≧縺�∴縺ァ Atom 繝代ち繝シ繝ウ縺ョ郢ー霑斐@蝗樊焚縺ッ蜿ッ閭ス縺ェ髯舌j蟆代↑縺�€ゅ∪縺溯イェ谺イ縺ォ縺吶k縺薙→繧ゅ〒縺阪k縲ゅ◎縺ョ蝣エ蜷医€� Atom 繝代ち繝シ繝ウ縺ッ蠕檎カ壹�繝槭ャ繝√↓蜿ッ閭ス縺ェ髯舌j螟壹¥縺ョ蝗樊焚郢ー繧願ソ斐&繧後k縲ゅ�繝�メ繧定。後≧蜈・蜉帶枚蟄怜�繧医j繧ゅ�縺励m Atom 繝代ち繝シ繝ウ縺檎ケー繧願ソ斐&繧後€√@縺溘′縺」縺ヲ Atom 縺ョ逡ー縺ェ繧句渚蠕ゥ縺ッ縲∫焚縺ェ繧句�蜉幃Κ蛻�枚蟄怜�縺ィ繝槭ャ繝√〒縺阪k縲�

Atom 縺ィ邯壹″縺ョ豁」隕剰。ィ迴セ縺後☆縺ケ縺ヲ驕ク謚樒せ繧呈戟縺、蝣エ蜷医€� Atom 縺ッ縺セ縺壼庄閭ス縺ェ髯舌j螟壹¥(譛€遏ュ繝槭ャ繝√〒縺ッ蟆代↑縺�) 縺ョ繝槭ャ繝√r陦後≧縲らカ壹″縺ョ蜈ィ驕ク謚櫁い縺ッ縲∵怙蠕後� Atom 蜿榊セゥ荳ュ縺ァ縺ョ谺。縺ョ驕ク謚櫁い荳翫↓遘サ蜍輔☆繧句燕縺ォ縲∬ゥヲ陦後&繧後k縲よ怙蠕� (n 逡ェ逶ョ) 縺ョ Atom 蜿榊セゥ縺ョ蜈ィ驕ク謚櫁い縺ッ縲∵怙蠕後°繧我ク€縺、蜑� (n-1 逡ェ逶ョ) 縺ョ Atom 蜿榊セゥ荳ュ縺ァ縺ョ谺。縺ョ驕ク謚櫁い荳翫↓遘サ蜍輔☆繧句燕縺ォ縲∬ゥヲ陦後&繧後k; 縺昴�譎らせ縺ァ縲√h繧雁、壹¥縺ョ縲√∪縺溘�繧医j蟆代↑縺� Atom 縺ョ蜿榊セゥ縺御サ雁コヲ縺ッ蜿ッ閭ス縺ァ縺ゅk縺薙→縺悟愛譏弱☆繧九°繧ゅ@繧後↑縺�; (n-1) 逡ェ逶ョ縺ョ Atom 縺ョ蜿榊セゥ縺ョ荳ュ縺ョ谺。縺ョ驕ク謚櫁い荳翫↓遘サ蜍輔☆繧句燕縺ォ縲�(蜿ッ閭ス縺ェ髯舌j蟆代↑縺上€√∪縺溘�蜿ッ閭ス縺ェ髯舌j螟壹¥縺ョ縺�★繧後°縺ァ蜀埼幕縺�)縲∽スソ縺�ース縺上&繧後k縲�

/a[a-z]{2,4}/.exec("abcdefghi")

縺� "abcde" 繧定ソ斐☆縺薙→縺ォ霈�∋縺ヲ縲�

/a[a-z]{2,4}?/.exec("abcdefghi")

縺ッ "abc" 繧定ソ斐☆縲�

縺セ縺溘€�

/(aa|aabaac|ba|b|c)*/.exec("aabaac")

荳翫�鬆��驕ク謚樒せ縺ォ繧医k豁」隕剰。ィ迴セ縺ッ

["aaba", "ba"]

縺ィ縺�≧驟榊�繧定ソ斐@縲�

["aabaac", "aabaac"]
["aabaac", "c"]

縺ィ縺ッ縺ェ繧峨↑縺�€�

荳願ィ倥�驕ク謚樒せ縺ョ鬆�コ上�縲�2 謨ー縺ョ譛€螟ァ蜈ャ邏�焚(蜊倬��。ィ險倥〒陦ィ縺�)繧堤ョ怜�縺吶k豁」隕剰。ィ迴セ縺ョ險倩ソー縺ォ繧ゆスソ逕ィ縺ァ縺阪k縲よャ。縺ョ萓九�縲�10 縺ィ 15 縺ョ譛€螟ァ蜈ャ邏�焚繧堤ョ怜�縺吶k:

"aaaaaaaaaa,aaaaaaaaaaaaaaa".replace(/^(a+)\1*,\1+$/,"$1")

縺薙l縺ッ蜊倬��。ィ險倥�譛€螟ァ蜈ャ邏�焚 "aaaaa" 繧定ソ斐☆縲�

繧ケ繝�ャ繝� 4 縺ョ RepeatMatcher 縺ッ縲� Atom 縺檎ケー繧願ソ斐&繧後k縺溘�縺ォ Atom 縺ョ captures 繧偵け繝ェ繧「縺吶k縲� 縺薙l縺ッ谺。縺ョ豁」隕剰。ィ迴セ縺ョ謖ッ繧玖�縺�↓隕九k縺薙→縺後〒縺阪k:

/(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac")

縺薙l縺ッ谺。縺ョ驟榊�繧定ソ斐@:

["zaacbbbcac", "z", "ac", "a", undefined, "c"]

谺。縺ョ繧医≧縺ェ繧ゅ�縺ァ縺ッ縺ェ縺�€�

["zaacbbbcac", "z", "ac", "a", "bbb", "c"]

譛€繧ょ、門�縺ョ * 縺ョ蜷�渚蠕ゥ縺後€√%縺ョ蝣エ蜷� 2 逡ェ逶ョ, 3 逡ェ逶ョ, 4 逡ェ逶ョ縺ァ縺ゅk謐墓拷譁�ュ怜�繧貞性繧€縲∵焚驥丞喧縺輔l縺� Atom 縺ォ蜷ォ縺セ繧後※縺�◆蜈ィ縺ヲ縺ョ謐墓拷縺輔l縺滓枚蟄怜�繧偵け繝ェ繧「縺吶k縺溘a縺ァ縺ゅk縲�

繧ケ繝�ャ繝� 1 縺ョ RepeatMatcher 縺ョ繧ッ繝ュ繝シ繧ク繝」 d 縺ッ縲∽ク€譌ヲ譛€蟆丞渚蠕ゥ謨ー縺梧コ€縺溘&繧後◆繧峨◎繧御サ・荳顔ゥコ譁�ュ怜�縺ォ繝槭ャ繝√☆繧� Atom 縺ョ螻暮幕繧呈峩縺ォ蜿榊セゥ縺吶k縺溘a縺ォ閠�∴縺ェ縺�%縺ィ繧貞ョ」險€縺吶k縲ゅ%繧後�豁」隕剰。ィ迴セ繧ィ繝ウ繧ク繝ウ縺後ヱ繧ソ繝シ繝ウ縺ョ辟。髯舌Ν繝シ繝励↓髯・繧九%縺ィ繧帝亟縺�〒縺翫j縲∵ャ。縺ョ繧医≧縺ェ豁」隕剰。ィ迴セ縺ッ:

/(a*)*/.exec("b")

縺セ縺溯凶蟷イ隍�尅縺ォ縺ッ谺。縺ョ繧医≧縺ェ繧ゅ�縺ッ:

/(a*)b\1+/.exec("baaaac")

縺薙l繧峨�谺。縺ョ驟榊�繧定ソ斐☆:

["b", ""]

15.10.2.6 Assertion

逕滓�隕丞援 Assertion :: ^ 縺ョ隧穂セ。縺ッ縲∝�驛ィ AssertionTester 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%繧後�蠑墓焚縺ォ State x 繧貞叙繧翫€∵ャ。繧貞ョ溯。後☆繧�:

  1. e 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
  2. e 縺� 0 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  3. Multiline 縺� false 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  4. 譁�ュ� Input[e-1] 縺瑚。檎オらォッ譁�ュ� <LF>, <CR>, <LS>, <PS> 縺ョ縺�■縺ョ荳€縺、縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  5. false 繧定ソ斐☆縲�

逕滓�隕丞援 Assertion :: $ 縺ョ隧穂セ。縺ッ縲∝�驛ィ AssertionTester 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%繧後�蠑墓焚縺ォ State x 繧貞叙繧翫€∵ャ。繧貞ョ溯。後☆繧�:

  1. e 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
  2. e 縺� InputLength 縺ィ遲峨@縺�↑繧峨�縲� true 繧定ソ斐☆縲�
  3. multiline 縺� false 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  4. 譁�ュ� Input[e] 縺瑚。檎オらォッ譁�ュ� <LF>, <CR>, <LS>, <PS> 縺ョ縺�■縺ョ荳€縺、縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  5. false 繧定ソ斐☆縲�

逕滓�隕丞援 Assertion :: \ b 縺ョ隧穂セ。縺ッ縲∝�驛ィ AssertionTester 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%繧後�蠑墓焚縺ォ State x 繧貞叙繧翫€∵ャ。繧貞ョ溯。後☆繧�:

  1. e 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
  2. IsWordChar(e-1) 繧貞他縺ウ蜃コ縺励€∫オ先棡縺ョ boolean 蛟、繧� a 縺ィ縺吶k縲�
  3. IsWordChar(e) 繧貞他縺ウ蜃コ縺励€∫オ先棡縺ョ boolean 蛟、繧� b 縺ィ縺吶k縲�
  4. a 縺� true 縺九▽ b 縺� false 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  5. a 縺� false 縺九▽ b 縺� true 縺ェ繧峨�縲� true 繧定ソ斐☆縲�
  6. false 繧定ソ斐☆縲�

逕滓�隕丞援 Assertion :: \ B 縺ョ隧穂セ。縺ッ縲∝�驛ィ AssertionTester 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%繧後�蠑墓焚縺ォ State x 繧貞叙繧翫€∵ャ。繧貞ョ溯。後☆繧�:

  1. e 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
  2. IsWordChar(e-1) 繧貞他縺ウ蜃コ縺励€∫オ先棡縺ョ boolean 蛟、繧� a 縺ィ縺吶k縲�
  3. IsWordChar(e) 繧貞他縺ウ蜃コ縺励€∫オ先棡縺ョ boolean 蛟、繧� b 縺ィ縺吶k縲�
  4. a 縺� true 縺九▽ b 縺� false 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  5. a 縺� false 縺九▽ b 縺� true 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  6. true 繧定ソ斐☆縲�

蜀�Κ陬懷勧髢「謨ー IsWordChar 縺ッ謨エ謨ー繝代Λ繝。繝シ繧ソ e 繧偵→繧翫€∵ャ。繧貞ョ溯。後☆繧�:

  1. e == -1 縺セ縺溘� e == InputLength 縺ェ繧峨�縲� false 繧定ソ斐☆縲�
  2. c 繧呈枚蟄� Input[e] 縺ィ縺吶k縲�
  3. c 縺御ク玖。ィ縺ョ 63 譁�ュ励�縺�■縺ョ荳€縺、縺ェ繧峨�縲� true 繧定ソ斐☆縲�
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    0 1 2 3 4 5 6 7 8 9 _
  4. false 繧定ソ斐☆縲�

15.10.2.7 Quantifier

逕滓�隕丞援 Quantifier :: QuantifierPrefix 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. QuantifierPrefix 繧定ゥ穂セ。縺励€� 2 蛟九�邨先棡: 謨エ謨ー min 縺ィ謨エ謨ー (縺セ縺溘� ∞) max 繧貞叙蠕励☆繧九€�
  2. 3 蛟九�邨先棡 min, max, true 繧定ソ斐☆縲�

逕滓�隕丞援 Quantifier :: QuantifierPrefix ? 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. QuantifierPrefix 繧定ゥ穂セ。縺励€� 2 蛟九�邨先棡: 謨エ謨ー min 縺ィ謨エ謨ー (縺セ縺溘� ∞) max 繧貞叙蠕励☆繧九€�
  2. 3 蛟九�邨先棡 min, max, false 繧定ソ斐☆縲�

逕滓�隕丞援 QuantifierPrefix :: * 縺ョ隧穂セ。縺ッ縲� 2 蛟九�邨先棡 0 縺ィ ∞ 繧定ソ斐☆縲�

逕滓�隕丞援 QuantifierPrefix :: + 縺ョ隧穂セ。縺ッ縲� 2 蛟九�邨先棡 1 縺ィ ∞ 繧定ソ斐☆縲�

逕滓�隕丞援 QuantifierPrefix :: ? 縺ョ隧穂セ。縺ッ縲� 2 蛟九�邨先棡 0 縺ィ 1 繧定ソ斐☆縲�

逕滓�隕丞援 QuantifierPrefix :: { DecimalDigits } 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. i 繧� DecimalDigits 縺ョ謨ー蟄ヲ蛟、縺ィ縺吶k(繧サ繧ッ繧キ繝ァ繝ウ 7.8.3 蜿ら�)縲�
  2. 2 蛟九�邨先棡 i 縺ィ i 繧定ソ斐☆縲�

逕滓�隕丞援 QuantifierPrefix :: { DecimalDigits , } 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. i 繧� DecimalDigits 縺ョ謨ー蟄ヲ蛟、縺ィ縺吶k縲�
  2. 2 蛟九�邨先棡 i 縺ィ ∞ 繧定ソ斐☆縲�

逕滓�隕丞援 QuantifierPrefix :: { DecimalDigits , DecimalDigits } 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. i 繧� 1 蛟狗岼縺ョ DecimalDigits 縺ョ謨ー蟄ヲ蛟、縺ィ縺吶k縲�
  2. j 繧� 2 蛟狗岼縺ョ DecimalDigits 縺ョ謨ー蟄ヲ蛟、縺ィ縺吶k縲�
  3. 2 蛟九�邨先棡 i 縺ィ j 繧定ソ斐☆縲�

15.10.2.8 Atom

逕滓�隕丞援 Atom :: PatternCharacter 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. ch 繧� PatternCharacter 縺ァ陦ィ縺輔l繧区枚蟄励→縺吶k縲�
  2. A 繧呈枚蟄� ch 繧貞性繧€ 1 隕∫エ� CharSet 縺ィ縺吶k縲�
  3. CharacterSetMatcher(A, false) 繧貞他蜃コ縺励€∫オ先棡縺ョ Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 Atom :: . 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. A 繧� 4 蛟九�陦檎オらォッ譁�ュ� <LF>, <CR>, <LS>, <PS> 繧帝勁縺丞�縺ヲ譁�ュ励�髮�粋縺ィ縺吶k縲�
  2. CharacterSetMatcher(A, false) 繧貞他縺ウ蜃コ縺励€√◎縺ョ邨先棡縺ョ Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 Atom :: \ AtomEscape 縺ョ隧穂セ。縺ッ縲� AtomEscape 繧定ゥ穂セ。縺励※ Matcher 繧貞叙蠕励@縲√◎縺ョ Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 Atom :: CharacterClass 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. CharacterClass 繧定ゥ穂セ。縺励€� CharSet A 縺ィ boolean 蛟、 invert 繧貞叙蠕励☆繧九€�
  2. CharacterSetMatcher(A, invert) 繧貞他縺ウ蜃コ縺励€√◎縺ョ邨先棡縺ョ Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 Atom :: ( Disjunction ) 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Disjunction 繧定ゥ穂セ。縺励€� Matcher m 繧貞叙蠕励☆繧九€�
  2. parenIndex 繧偵€∵ュ」隕剰。ィ迴セ蜈ィ菴薙↓縺翫>縺ヲ縲√%縺ョ逕滓�隕丞援螻暮幕縺ョ譛€蛻昴�蟾ヲ諡ャ蠑ァ縺ョ蟾ヲ蛛エ縺ォ逋コ逕溘☆繧句キヲ謐墓拷諡ャ蠑ァ縺ョ謨ー縺ィ縺吶k縲ゅ%繧後�縲√%縺ョ逕滓�隕丞援縺ョ Atom 縺ォ蜈郁。後☆繧� Atom :: ( Disjunction ) 逕滓�隕丞援縺ョ螻暮幕邱乗焚縺ォ縲√%縺ョ Atom 繧帝哩縺倥※縺�k Atom :: ( Disjunction ) 逕滓�隕丞援縺ョ邱乗焚繧貞刈縺医◆繧ゅ�縺ァ縺ゅk縲�
  3. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 2 蛟九�蠑墓焚 State x and a Continuation c 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    1. 蜀�Κ Continuation 繧ッ繝ュ繝シ繧ク繝」 d 繧剃ス懈�縺吶k縲ゅ%縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 1 蛟九�蠑墓焚 State y 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
      1. cap 繧� y 縺ョ captures 蜀�Κ驟榊�縺ョ蛻晄悄縺ョ隍�」ス (fresh copy) 縺ィ縺吶k縲�
      2. xe 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
      3. ye 繧� y 縺ョ endIndex 縺ィ縺吶k縲�
      4. s 繧偵€� Input 縺ョ 菴咲スョ xe 縺九i ye 縺ョ逶エ蜑阪∪縺ァ縺ョ譁�ュ励r謖√▽ fresh string 縺ィ縺吶k縲�
      5. cap[parenIndex+1] 繧� s 縺ォ險ュ螳壹☆繧九€�
      6. z 繧� State (ye, cap) 縺ィ縺吶k縲�
      7. c(z) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�
    2. m(x, d) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

逕滓�隕丞援 Atom :: ( ? : Disjunction ) 縺ョ隧穂セ。縺ッ縲� Disjunction 繧定ゥ穂セ。縺励※ Matcher 繧貞叙蠕励@縲√◎縺ョ Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 Atom :: ( ? = Disjunction ) 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Disjunction 繧定ゥ穂セ。縺励※ Matcher m 繧貞叙蠕励☆繧九€�
  2. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ◎縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 2 蛟九�蠑墓焚 State x 縺ィ Continuation c 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    1. d 繧偵€∵�蜉溘☆繧� MatchResult 縺ィ縺励※縺昴� State 蠑墓焚繧貞クク縺ォ霑斐☆ Continuation 縺ィ縺吶k縲�
    2. m(x, d) 繧貞他蜃コ縺励€� r 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
    3. r 縺� failure 縺ェ繧峨�縲� failure 繧定ソ斐☆縲�
    4. y 繧� r 縺ョ State 縺ィ縺吶k縲�
    5. cap 繧� y 縺ョ captures 蜀�Κ驟榊�縺ィ縺吶k縲�
    6. xe 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
    7. z 繧� State (xe, cap) 縺ィ縺吶k縲�
    8. c(z) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

逕滓�隕丞援 Atom :: ( ? ! Disjunction ) 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. Disjunction 繧定ゥ穂セ。縺励※ Matcher m 繧貞叙蠕励☆繧九€�
  2. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ◎縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 2 蛟九�蠑墓焚 State x 縺ィ Continuation c 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    1. d 繧偵€∵�蜉溘☆繧� MatchResult 縺ィ縺励※縺昴� State 蠑墓焚繧貞クク縺ォ霑斐☆ Continuation 縺ィ縺吶k縲�
    2. m(x, d) 繧貞他蜃コ縺励€� r 繧偵◎縺ョ邨先棡縺ィ縺吶k縲�
    3. r 縺� failure 縺ァ縺ェ縺�↑繧峨�縲� failure 繧定ソ斐☆縲�
    4. c(x) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

蜀�Κ陬懷勧髢「謨ー CharacterSetMatcher 縺ッ 2 蛟九�蠑墓焚 CharSet A 縺ィ boolean 繝輔Λ繧ー invert 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:

  1. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ◎縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 2 蛟九�蠑墓焚 State x 縺ィ Continuation c 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    1. e 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
    2. e == InputLength 縺ェ繧峨�縲� failure 繧定ソ斐☆縲�
    3. c 繧� 譁�ュ� Input[e] 縺ィ縺吶k縲�
    4. cc 繧� Canonicalize(c) 縺ョ邨先棡縺ィ縺吶k縲�
    5. invert 縺� true 縺ェ繧峨�縲� 繧ケ繝�ャ繝� 8 縺ク縲�
    6. 髮�粋 A 縺ォ縲� Canonicalize(a) == cc 縺ァ縺ゅk繧医≧縺ェ蜈�′蟄伜惠縺励↑縺�↑繧峨�縲� failure 繧定ソ斐☆縲�
    7. 繧ケ繝�ャ繝� 9 縺ク縲�
    8. 髮�粋 A 縺ォ縲� Canonicalize(a) == cc 縺ァ縺ゅk繧医≧縺ェ蜈�′蟄伜惠縺吶k縺ェ繧峨�縲� failure 繧定ソ斐☆縲�
    9. cap 繧� x 縺ョ captures 蜀�Κ驟榊�縺ィ縺吶k縲�
    10. y 繧� State (e+1, cap) 縺ィ縺吶k縲�
    11. c(y) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

蜀�Κ陬懷勧髢「謨ー Canonicalize 縺ッ繝代Λ繝。繧ソ縺ォ譁�ュ� ch 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:

  1. IgnoreCase 縺� false 縺ェ繧峨�縲� ch 繧定ソ斐☆縲�
  2. u 繧� ch 繧貞、ァ譁�ュ励↓螟画鋤縺励◆繧ゅ�縺ィ縺吶k縲ゅ%繧後�譁�ュ怜� ch 縺ォ String.prototype.toUpperCase 繧貞他蜃コ縺吶�縺ィ蜷梧ァ倥�繧ゅ�縺ァ縺ゅk縲�
  3. u 縺悟腰荳€縺ョ譁�ュ励↓繧医j讒区�縺輔l繧九b縺ョ縺ァ縺ェ縺�↑繧峨�縲� ch 繧定ソ斐☆縲�
  4. cu 繧� u 縺ョ譁�ュ励→縺吶k縲�
  5. ch 縺ョ繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺� 10 騾イ謨ー縺ァ 128 莉・荳翫〒縺ゅj縲√°縺、 cu 縺ョ繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺� 10 騾イ謨ー縺ァ 128 譛ェ貅€縺ェ繧峨�縲� ch 繧定ソ斐☆縲�
  6. cu 繧定ソ斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ: ( Disjunction ) 蠖「蠑上�諡ャ蠑ァ縺ッ縲� Disjunction 繝代ち繝シ繝ウ縺ョ繧ー繝ォ繝シ繝玲�蛻�→縺ィ繧ゅ↓縲√�繝�メ邨先棡縺ョ菫晏ュ倥r謠千、コ縺吶k縲らオ先棡縺ッ蠕梧婿蜿ら� (\ 縺ォ 0 莉・螟悶�10騾イ謨ー縺檎カ壹¥繧ゅ�)縲∫スョ謠帶枚蟄怜�蜀�〒縺ョ蜿ら�縺ォ逕ィ縺�i繧後€√∪縺滓ュ」隕剰。ィ迴セ繝槭ャ繝�未謨ー縺九i驟榊�縺ョ荳€驛ィ繧定ソ斐&繧後k縲よ峡蠑ァ縺ョ謐墓拷縺ョ謖ッ繧玖�縺��謚大宛縺ォ縺ッ縲∽サ」繧上j縺ォ (?: Disjunction ) 蠖「蠑上r逕ィ縺�k縲�

(?= Disjunction ) 蠖「蠑上�縲� 0 譁�ュ怜ケ��閧ッ螳壹�蜈郁ェュ縺ソ繧呈欠螳壹☆繧九€よ�蜉溘☆繧九◆繧√↓縺ッ Disjunction 蜀�Κ縺ョ繝代ち繝シ繝ウ縺ッ迴セ蝨ィ菴咲スョ縺ォ縺翫>縺ヲ繝槭ャ繝√@縺ェ縺代l縺ー縺ェ繧峨↑縺�′縲∝セ檎カ壹�繝槭ャ繝√Φ繧ー縺ョ蜑阪↓迴セ蝨ィ菴咲スョ縺ッ蜑埼€イ縺励↑縺�€� Disjunction 縺檎樟蝨ィ菴咲スョ縺ォ縺翫¢繧九�繝�メ縺ォ菴暮€壹j縺九≠繧句�エ蜷医�縲∵怙蛻昴�繧ゅ�縺�縺代′讀懈渊縺輔l繧九€ゆサ悶�豁」隕剰。ィ迴セ貍皮ョ怜ュ舌→縺ッ逡ー縺ェ繧翫€� (?= 蠖「蠑丞�縺ク縺ョ蠕梧婿蜿ら�縺ッ蟄伜惠縺励↑縺� (縺薙�迢ャ迚ケ縺ョ謖ッ繧玖�縺�� Perl 縺九i邯呎価縺輔l繧�)縲� Disjunction 縺梧黒謐画峡蠑ァ縺ィ縺昴�謐墓拷縺ク縺ョ蠕梧婿蜿ら�繧貞性繧€蠕檎カ壹�繝代ち繝シ繝ウ縺ァ讒区�縺輔l繧九→縺阪€√%縺ョ縺薙→縺碁㍾隕√↓縺ェ繧九€�

萓九∴縺ー縲�

/(?=(a+))/.exec("baaabac")

縺ッ縲� 1 蛟狗岼縺ョ b 縺ョ逶エ蠕後�遨コ譁�ュ怜�縺ォ繝槭ャ繝√@縲√◎繧後f縺域ャ。縺ョ驟榊�繧定ソ斐☆:

["", "aaa"]

蜈郁ェュ縺ソ縺ク蠕梧婿蜿ら�縺ョ荳崎カウ縺ョ萓九→縺励※縲∵ャ。繧定€�∴縺ヲ縺ソ繧�:

/(?=(a+))a*b\1/.exec("baaabac")

縺薙�蠑上′霑斐☆縺ョ縺ッ谺。縺ァ縺ゅj:

["aba", "a"]

谺。縺ョ繧医≧縺ォ縺ッ縺ェ繧峨↑縺�:

["aaaba", "a"]

(?= Disjunction ) 蠖「蠑上�縲� 0 譁�ュ怜ケ��蜷ヲ螳壹�蜈郁ェュ縺ソ繧呈欠螳壹☆繧九€よ�蜉溘☆繧九◆繧√↓縺ッ Disjunction 蜀�Κ縺ョ繝代ち繝シ繝ウ縺ッ迴セ蝨ィ菴咲スョ縺ォ縺翫>縺ヲ繝槭ャ繝√↓螟ア謨励@縺ェ縺代l縺ー縺ェ繧峨↑縺�€ら樟蝨ィ菴咲スョ縺ッ蠕檎カ壹�繝槭ャ繝√Φ繧ー縺ョ蜑阪↓蜑埼€イ縺励↑縺�€� Disjunction 縺ォ縺ッ謐墓拷諡ャ蠑ァ繧貞性繧√i繧後k縺後€√◎繧後i縺ク縺ョ蠕梧婿蜿ら�縺ッ Disjunction 閾ェ霄ォ蜀�Κ縺九i縺ョ蝣エ蜷医b縺ョ縺ソ諢丞袖繧呈戟縺、縲ゅヱ繧ソ繝シ繝ウ蜀��莉悶�蝣エ謇€縺九i縺ョ縺薙l繧峨�謐墓拷諡ャ蠑ァ縺ク縺ョ蠕梧婿蜿ら�縺ッ縲√ヱ繧ソ繝シ繝ウ縺ォ蜷ヲ螳壹�蜈郁ェュ縺ソ縺梧�蜉溘@縺ヲ縺ッ縺ェ繧峨↑縺�◆繧√€∝クク縺ォ undefined 繧定ソ斐☆縲ゆセ九∴縺ー:

/(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac")

縺ッ縲√≠繧区ュ」縺ョ謨ー n 蛟九� a, 1 蛟九� b, 莉悶� n 蛟九� (1 蛟狗岼縺ョ \2 縺ァ謖�ョ壹&繧後k) a, 1 蛟九� c, 縺檎峩蠕後↓邯壹°縺ェ縺�h縺�↑ 1 蛟九� a 繧呈、懃エ「縺吶k縲� 2 蛟狗岼縺ョ \2 縺ッ蜷ヲ螳壹�蜈郁ェュ縺ソ縺ョ螟夜Κ縺ァ縺ゅj縲√@縺溘′縺」縺ヲ undefined 縺ォ蟇セ縺励※繝槭ャ繝√☆繧九�縺ァ蟶ク縺ォ謌仙粥縺吶k縲ょシ丞�菴薙�谺。縺ョ驟榊�繧定ソ斐☆:

["baaabaac", "ba", undefined, "abaac"]

譁�ュ励こ繝シ繧ケ繧貞玄蛻・縺励↑縺��繝�メ縺ァ縺ッ縲∝�縺ヲ縺ョ譁�ュ励�豈碑シ��逶エ蜑阪↓證鈴サ吶↓螟ァ譁�ュ励↓螟画鋤縺輔l繧九€ゅ@縺九@縲∝、ァ譁�ュ励∈縺ョ螟画鋤縺� 1 蛟倶サ・荳翫�譁�ュ励↓螻暮幕縺輔l繧句�エ蜷�("ß" (\u00DF) 縺九i "SS" 縺ォ螟画鋤縺ェ縺ゥ)縺ッ縲∽サ」繧上j縺ォ譁�ュ励�縺昴�縺セ縺セ谿九&繧後k縲� ASCII 譁�ュ励〒縺ェ縺上※繧ゅ€∝、ァ譁�ュ励∈縺ョ螟画鋤縺後◎縺ョ譁�ュ励r ASCII 譁�ュ励↓縺吶k蝣エ蜷医€√◎縺ョ譁�ュ励�谿九&繧後k縲ゅ%繧後� /[a-z]/i 縺ョ繧医≧縺ェ ASCII 譁�ュ励�繝槭ャ繝√�縺ソ繧呈э蝗ウ縺励◆豁」隕剰。ィ迴セ縺ョ繝槭ャ繝√°繧峨€―u0131 \u017F 縺ョ繧医≧縺ェ Unicode 譁�ュ励r驕ョ繧九€ゅ↑縺翫€√%繧後i縺ョ螟画鋤縺瑚ィア蜿ッ縺輔l繧句�エ蜷医€� /[^\W]/i 縺ッ a, b, ..., h, 縺ォ縺ッ繝槭ャ繝√☆繧九′ i 繧� s 縺ォ縺ッ繝槭ャ繝√@縺ェ縺�€�

15.10.2.9 AtomEscape

逕滓�隕丞援 AtomEscape :: DecimalEscape 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. DecimalEscape 繧定ゥ穂セ。縺励※ EscapeValue E 繧貞叙蠕励☆繧九€�
  2. E 縺梧枚蟄励〒縺ェ縺代l縺ー縲√せ繝�ャ繝� 6 縺ク縲�
  3. ch 繧� E 縺ョ譁�ュ励→縺吶k縲�
  4. A 繧呈枚蟄� ch 繧貞性繧€隕∫エ�1蛟九� CharSet 縺ィ縺吶k縲�
  5. CharacterSetMatcher(A, false) 繧貞他蜃コ縺励€∫オ先棡縺ョ Matcher 繧定ソ斐☆縲�
  6. E 縺ッ謨エ謨ー縺ァ縺ェ縺代l縺ー縺ェ繧峨↑縺�€� n 繧偵◎縺ョ謨エ謨ー縺ィ縺吶k縲�
  7. n=0 縺セ縺溘� n>NCapturingParens 縺ェ繧峨�縲∽セ句、� SyntaxError 繧呈兜縺偵k縲�
  8. 蜀�Κ Matcher 繧ッ繝ュ繝シ繧ク繝」繧定ソ斐☆縲ゅ%縺ョ繧ッ繝ュ繝シ繧ク繝」縺ッ 2 蛟九�蠑墓焚縲� State x 縺ィ Continuation c 繧偵→繧翫€∵ャ。縺ョ繧医≧縺ォ謖ッ闊槭≧:
    1. cap 繧� x 縺ョ captures 縺ョ蜀�Κ驟榊�縺ィ縺吶k縲�
    2. s 繧� cap[n] 縺ィ縺吶k縲�
    3. s 縺� undefined 縺ェ繧峨�縲� c(x) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�
    4. e 繧� x 縺ョ endIndex 縺ィ縺吶k縲�
    5. len 繧� s 縺ョ length 縺ィ縺吶k縲�
    6. f 繧� e+len 縺ィ縺吶k縲�
    7. f>InputLength 縺ェ繧峨�縲� failure 繧定ソ斐☆縲�
    8. Canonicalize(s[i]) 縺� Canonicalize(Input [e+i]) 縺ィ蜷後§譁�ュ励〒縺ェ縺�h縺�↑ 0 莉・荳� len 譛ェ貅€縺ョ謨エ謨ー i 縺悟ュ伜惠縺吶k縺ェ繧峨�縲� failure 繧定ソ斐☆縲�
    9. y 繧� State (f, cap) 縺ィ縺吶k縲�
    10. c(y) 繧貞他蜃コ縺励€√◎縺ョ邨先棡繧定ソ斐☆縲�

逕滓�隕丞援 AtomEscape :: CharacterEscape 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. CharacterEscape 繧定ゥ穂セ。縺励€∵枚蟄� ch 繧貞叙蠕励☆繧九€�
  2. A 繧呈枚蟄� ch 繧貞性繧€隕∫エ�1蛟九� CharSet 縺ィ縺吶k縲�
  3. CharacterSetMatcher(A, false) 繧貞他蜃コ縺励€∫オ先棡縺ョ Matcher 繧定ソ斐☆縲�

逕滓�隕丞援 AtomEscape :: CharacterClassEscape 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. CharacterClassEscape 繧定ゥ穂セ。縺励€� CharSet A 繧貞叙蠕励☆繧九€�
  2. CharacterSetMatcher(A, false) 繧貞他蜃コ縺励€∫オ先棡縺ョ Matcher 繧定ソ斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ: \ 縺ォ 0 莉・螟悶�10騾イ謨ー n 縺ョ邯壹¥蠖「蠑上�繧ィ繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ縺ッ縲∵黒謐画峡蠑ァ縺ョ n 逡ェ逶ョ縺ョ髮�粋 (繧サ繧ッ繧キ繝ァ繝ウ 15.10.2.11) 縺ョ邨先棡縺ォ繝槭ャ繝√☆繧九€よュ」隕剰。ィ迴セ荳ュ縺ョ謐墓拷諡ャ蠑ァ縺� n 蛟区悴貅€縺ァ縺ゅk蝣エ蜷医�繧ィ繝ゥ繝シ縺ァ縺ゅk縲よュ」隕剰。ィ迴セ縺� n 蛟倶サ・荳翫�謐墓拷諡ャ蠑ァ繧呈戟縺、縺� n 逡ェ逶ョ縺御ス輔b謐墓拷縺輔l縺� undefined 縺ァ縺ゅk蝣エ蜷医€√◎縺ョ蠕梧婿蜿ら�縺ッ蟶ク縺ォ謌仙粥縺吶k縲�

15.10.2.10 CharacterEscape

逕滓�隕丞援 CharacterEscape :: ControlEscape 縺ョ隧穂セ。縺ッ縲∽ク九�陦ィ縺ォ蠕薙▲縺ヲ譁�ュ励r霑斐☆:

ControlEscape Unicode Value Name Symbol
t \u0009 horizontal tab <HT>
n \u000A line feed (new line) <LF>
v \u000B vertical tab <VT>
f \u000C form feed <FF>
r \u000D carriage return <CR>

逕滓�隕丞援 CharacterEscape :: c ControlLetter 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. ch 繧� ControlLetter 縺ァ陦ィ縺輔l繧区枚蟄励→縺吶k縲�
  2. i 繧� ch 縺ョ繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺ィ縺吶k縲�
  3. j 繧� i 繧� 32 縺ァ蜑イ縺」縺滉ス吶j縺ィ縺吶k縲�
  4. j 繧堤分蜿キ縺ィ縺吶k Unicode 譁�ュ励r霑斐☆縲�

逕滓�隕丞援 CharacterEscape :: HexEscapeSequence 縺ョ隧穂セ。縺ッ縲� HexEscapeSequence 縺ョ譁�ュ怜€、 (繧サ繧ッ繧キ繝ァ繝ウ 7.8.4) 繧定ゥ穂セ。縺励※縲∫オ先棡縺ョ譁�ュ励r霑斐☆縲�

逕滓�隕丞援 CharacterEscape :: UnicodeEscapeSequence 縺ョ隧穂セ。縺ッ縲� UnicodeEscapeSequence 縺ョ譁�ュ怜€、 (繧サ繧ッ繧キ繝ァ繝ウ 7.8.4) 繧定ゥ穂セ。縺励※縲∫オ先棡縺ョ譁�ュ励r霑斐☆縲�

逕滓�隕丞援 CharacterEscape :: IdentityEscape 縺ョ隧穂セ。縺ッ縲� IdentityEscape 縺ァ陦ィ縺輔l繧区枚蟄励r霑斐☆縲�

15.10.2.11 DecimalEscape

逕滓�隕丞援 DecimalEscape :: DecimalIntegerLiteral [lookahead ∉ DecimalDigit] 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧九€�

  1. i 繧� DecimalIntegerLiteral 縺ョ謨ー蟄ヲ蛟、縺ィ縺吶k縲�
  2. i 縺� 0 縺ェ繧峨�縲� <NUL> 譁�ュ� (Unicode 蛟、 0000) 繧呈ァ区�縺吶k EscapeValue 繧定ソ斐☆縲�
  3. 謨エ謨ー i 縺ァ讒区�縺吶k EscapeValue 繧定ソ斐☆縲�

"DecimalIntegerLiteral 縺ョ謨ー蟄ヲ蛟、" 縺ョ螳夂セゥ縺ッ繧サ繧ッ繧キ繝ァ繝ウ 7.8.3 縺ァ縺ゅk縲�

蜿り€�ュ蝣ア隗」隱ャ: 譛€蛻昴�謨ー蟄励′0莉・螟悶〒縺ゅk10騾イ謨ー n 縺� \ 縺ォ邯壹¥蝣エ蜷医€√◎縺ョ繧ィ繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ縺ッ蠕梧婿蜿ら�縺ィ縺励※閠�∴繧九€よュ」隕剰。ィ迴セ蜈ィ菴薙�蟾ヲ謐墓拷諡ャ蠑ァ縺ョ邱乗焚繧医j繧� n 縺悟、ァ縺阪>蝣エ蜷医�繧ィ繝ゥ繝シ縺ァ縺ゅk縲� \0 縺ッ NUL 譁�ュ励r陦ィ縺励€�10騾イ謨ー蟄励r蠕後↓邯壹¢繧九%縺ィ縺ッ縺ァ縺阪↑縺�€�

15.10.2.12 CharacterClassEscape

逕滓�隕丞援 CharacterClassEscape :: d 縺ョ隧穂セ。縺ッ縲�0 縺九i 9 縺セ縺ァ繧貞性繧€譁�ュ励� 10 蛟九�隕∫エ�髮�粋繧定ソ斐☆縲�

逕滓�隕丞援 CharacterClassEscape :: D 縺ョ隧穂セ。縺ッ縲� CharacterClassEscape :: d 縺瑚ソ斐☆髮�粋繧帝勁縺丞�縺ヲ縺ョ譁�ュ励�髮�粋繧定ソ斐☆縲�

逕滓�隕丞援 CharacterClassEscape :: s 縺ョ隧穂セ。縺ッ縲� WhiteSpace (繧サ繧ッ繧キ繝ァ繝ウ 7.2) 縺セ縺溘� LineTerminator (繧サ繧ッ繧キ繝ァ繝ウ 7.3) 逕滓�隕丞援縺ョ蜿ウ霎コ荳翫�譁�ュ励r蜷ォ繧€譁�ュ鈴寔蜷医r霑斐☆縲�

逕滓�隕丞援 CharacterClassEscape :: S 縺ョ隧穂セ。縺ッ縲� CharacterClassEscape :: s 縺瑚ソ斐☆髮�粋繧帝勁縺丞�縺ヲ縺ョ譁�ュ鈴寔蜷医r霑斐☆縲�

逕滓�隕丞援 CharacterClassEscape :: w 縺ョ隧穂セ。縺ッ縲� 63 蛟九�譁�ュ励r蜷ォ繧€譁�ュ励�髮�粋繧定ソ斐☆:

a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 _

逕滓�隕丞援 CharacterClassEscape :: W 縺ョ隧穂セ。縺ッ縲� CharacterClassEscape :: w 縺瑚ソ斐☆髮�粋繧帝勁縺丞�縺ヲ縺ョ譁�ュ鈴寔蜷医r霑斐☆縲�

15.10.2.13 CharacterClass

逕滓�隕丞援 CharacterClass :: [ [lookahead ∉ {^}] ClassRanges ] 縺ョ隧穂セ。縺ッ縲� ClassRanges 繧定ゥ穂セ。縺励※ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 縺ィ繝悶�繝ェ繧「繝ウ蛟、 false 繧定ソ斐☆縲�

逕滓�隕丞援 CharacterClass :: [ ^ ClassRanges ] 縺ョ隧穂セ。縺ッ縲� ClassRanges 繧定ゥ穂セ。縺励※ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 縺ィ繝悶�繝ェ繧「繝ウ蛟、 true 繧定ソ斐☆縲�

15.10.2.14 ClassRanges

逕滓�隕丞援 ClassRanges :: [empty] 縺ョ隧穂セ。縺ッ縲∫ゥコ縺ョ CharSet 繧定ソ斐☆縲�

逕滓�隕丞援 ClassRanges :: NonemptyClassRanges 縺ョ隧穂セ。縺ッ縲� NonemptyClassRanges 繧定ゥ穂セ。縺励※ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 繧定ソ斐☆縲�

15.10.2.15 NonemptyClassRanges

逕滓�隕丞援 NonemptyClassRanges :: ClassAtom 縺ョ隧穂セ。縺ッ縲� ClassAtom 繧定ゥ穂セ。縺励※ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 繧定ソ斐☆縲�

逕滓�隕丞援 NonemptyClassRanges :: ClassAtom NonemptyClassRangesNoDash 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. ClassAtom 繧定ゥ穂セ。縺励€� CharSet A 繧貞叙蠕励☆繧九€�
  2. NonemptyClassRangesNoDash 繧定ゥ穂セ。縺励€� CharSet B 繧貞叙蠕励☆繧九€�
  3. CharSet A 縺ィ B 縺ョ蜥碁寔蜷医r霑斐☆縲�

逕滓�隕丞援 NonemptyClassRanges :: ClassAtom - ClassAtom ClassRanges 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. 1 縺、逶ョ縺ョ ClassAtom 繧定ゥ穂セ。縺� CharSet A 繧貞叙蠕励☆繧九€�
  2. 2 縺、逶ョ縺ョ ClassAtom 繧定ゥ穂セ。縺� CharSet B 繧貞叙蠕励☆繧九€�
  3. ClassRanges 繧定ゥ穂セ。縺� CharSet C 繧貞叙蠕励☆繧九€�
  4. CharacterRange(A, B) 繧貞他蜃コ縺励€. 繧堤オ先棡縺ョ CharSet 縺ィ縺吶k縲�
  5. CharSet D 縺ィ C 縺ョ蜥碁寔蜷医r霑斐☆縲�

蜀�Κ陬懷勧髢「謨ー CharacterRange 縺ッ縲� 2 蛟九� CharSet 繝代Λ繝。繝シ繧ソ A 縺ィ B 繧偵→繧翫€∵ャ。繧貞ョ溯。後☆繧�:

  1. A 縺悟宍蟇�↑ 1 蛟九�譁�ュ励r蜷ォ縺セ縺ェ縺�€√∪縺溘� B 縺悟宍蟇�↑ 1 蛟九�譁�ュ励r蜷ォ縺セ縺ェ縺�↑繧峨�縲∽セ句、� SyntaxError 繧呈兜縺偵k縲�
  2. a 繧偵€� CharSet A 蜀�� 1 蛟九�譁�ュ励→縺吶k縲�
  3. b 繧偵€� CharSet B 蜀�� 1 蛟九�譁�ュ励→縺吶k縲�
  4. i 繧偵€∵枚蟄� a 縺ョ繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺ィ縺吶k縲�
  5. j 繧偵€∵枚蟄� b 縺ョ繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺ィ縺吶k縲�
  6. i > j 縺ェ繧峨�縲∽セ句、� SyntaxError 繧呈兜縺偵k縲�
  7. i 縺九i j 縺セ縺ァ縺ョ逡ェ蜿キ繧偵b縺、譁�ュ怜�縺ヲ繧貞性繧€髮�粋繧定ソ斐☆縲�

15.10.2.16 NonemptyClassRangesNoDash

逕滓�隕丞援 NonemptyClassRangesNoDash :: ClassAtom 隧穂セ。縺ッ縲� ClassAtom 隧穂セ。縺ァ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 繧定ソ斐☆縲�

逕滓�隕丞援 NonemptyClassRangesNoDash :: ClassAtomNoDash NonemptyClassRangesNoDash 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�::

  1. ClassAtomNoDash 繧定ゥ穂セ。縺励€� CharSet A 繧貞叙蠕励☆繧九€�
  2. NonemptyClassRangesNoDash 繧定ゥ穂セ。縺励€� CharSet B 繧貞叙蠕励☆繧九€�
  3. CharSets A 縺ィ B 縺ョ蜥碁寔蜷医r霑斐☆縲�

逕滓�隕丞援 NonemptyClassRangesNoDash :: ClassAtomNoDash - ClassAtom ClassRanges 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�::

  1. ClassAtomNoDash 繧定ゥ穂セ。縺励€� CharSet A 繧貞叙蠕励☆繧九€�
  2. ClassAtom 繧定ゥ穂セ。縺励€� CharSet B 繧貞叙蠕励☆繧九€�
  3. ClassRanges 繧定ゥ穂セ。縺励€� CharSet C 繧貞叙蠕励☆繧九€�
  4. CharacterRange(A, B) 繧貞他蜃コ縺励€� D 繧堤オ先棡縺ョ CharSet 縺ィ縺吶k縲�
  5. CharSet D 縺ィ C 縺ョ蜥碁寔蜷医r霑斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ: ClassRanges 縺ッ縲∝腰荳€縺ョ ClassAtom 縺昴@縺ヲ/縺セ縺溘� 繝€繝�す繝・縺ァ蛹コ蛻�i繧後◆ 2 蛟九� ClassAtom 縺ョ遽�峇縺ォ螻暮幕縺励※繧医>縲よ枚蟄励こ繝シ繧ケ縺ォ縺、縺�※縺ッ縲� ClassRanges 縺ッ 1 縺、逶ョ縺ョ ClassAtom 縺ィ 2 縺、逶ョ縺ョ ClassAtom 縺セ縺ァ縺ョ髢薙�蜈ィ縺ヲ縺ョ譁�ュ励r蜷ォ繧€縲� ClassAtom 縺悟腰荳€縺ョ譁�ュ励r陦ィ縺輔↑縺� (萓九∴縺ー縲∽ク€譁ケ縺� \w) 縺ェ繧峨�縲√∪縺� 1 縺、逶ョ縺ョ ClassAtom 縺ョ繧ウ繝シ繝峨�繧、繝ウ繝亥€、縺� 2 縺、逶ョ縺ョ ClassAtom 縺ョ繧ウ繝シ繝峨�繧、繝ウ繝亥€、繧医j螟ァ縺阪>縺ェ繧峨�縲√お繝ゥ繝シ縺檎匱逕溘☆繧九€�

繝代ち繝シ繝ウ縺梧枚蟄励こ繝シ繧ケ繧貞玄蛻・縺励↑縺�→縺励※繧ゅ€∫ッ�峇縺ョ荳。遶ッ縺ョ譁�ュ励こ繝シ繧ケ縺ッ縲∵枚蟄励�遽�峇縺ク縺ョ謇€螻槫愛螳壹↓縺翫>縺ヲ驥崎ヲ√〒縺ゅk縲ゅ◆縺ィ縺医�縲√ヱ繧ソ繝シ繝ウ /[E-F]/i 縺ッ譁�ュ� E, F, e, f 縺ォ縺ョ縺ソ繝槭ャ繝√☆繧九�縺ォ蟇セ縺励※縲√ヱ繧ソ繝シ繝ウ /[E-f]/i 縺ッ螟ァ譁�ュ怜ー乗枚蟄怜性繧√◆ ASCII 譁�ュ励□縺代〒縺ェ縺剰ィ伜捷 [, \, ], ^, _, ` 縺ォ繧ゅ�繝�メ縺吶k縲�

譁�ュ� - 縺ッ譁�ュ鈴€壹j縺ォ謇ア繧上l縺�k縺九€∫ッ�峇繧堤、コ縺帙k縺九〒縺ゅk縲� - 縺梧枚蟄鈴€壹j縺ォ謇ア繧上l繧九�縺ッ縲√◎繧後′ ClassRanges 縺ョ譛€蛻昴∪縺溘�譛€蠕後�譁�ュ励〒縺ゅk蝣エ蜷医€∫ッ�峇謖�ョ壹�蜈磯�ュ縺セ縺溘�譛ォ蟆セ縺ァ縺ゅk蝣エ蜷医€∫峩蠕後↓遽�峇謖�ョ壹′邯壹¥蝣エ蜷医〒縺ゅk縲�

15.10.2.17 ClassAtom

逕滓�隕丞援 ClassAtom :: - 縺ョ隧穂セ。縺ッ縲� 1 蛟九�譁�ュ� - 縺ァ讒区�縺輔l繧� CharSet 繧定ソ斐☆縲�

逕滓�隕丞援 ClassAtom :: ClassAtomNoDash 縺ョ隧穂セ。縺ッ縲� ClassAtomNoDash 隧穂セ。縺ァ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 繧定ソ斐☆縲�

15.10.2.18 ClassAtomNoDash

逕滓�隕丞援 ClassAtomNoDash :: SourceCharacter but not one of \ ] - 縺ョ隧穂セ。縺ッ縲� SourceCharacter 縺ァ陦ィ縺輔l繧区枚蟄励〒讒区�縺輔l繧� 1 隕∫エ�縺ョ CharSet 繧定ソ斐☆縲�

逕滓�隕丞援 ClassAtomNoDash :: \ ClassEscape 縺ョ隧穂セ。縺ッ縲� ClassEscape 隧穂セ。縺ァ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 繧定ソ斐☆縲�

15.10.2.19 ClassEscape

逕滓�隕丞援 ClassEscape :: DecimalEscape 縺ッ縲∵ャ。縺ョ繧医≧縺ォ隧穂セ。縺輔l繧�:

  1. DecimalEscape 繧定ゥ穂セ。縺励€� EscapeValue E 繧貞叙蠕励☆繧九€�
  2. E 縺梧枚蟄励〒縺ェ縺代l縺ー縲� 萓句、� SyntaxError 繧呈兜縺偵k縲�
  3. ch 繧� E 縺ョ譁�ュ励→縺吶k縲�
  4. 譁�ュ� ch 縺ァ讒区�縺輔l繧九€� 1 隕∫エ�縺ョ CharSet 繧定ソ斐☆縲�

逕滓�隕丞援 ClassEscape :: b 縺ッ縲� 1 蛟九�譁�ュ� <BS> (Unicode 蛟、 0008) 縺ァ讒区�縺輔l繧� CharSet繧定ソ斐@縺ヲ隧穂セ。縺輔l繧九€�

逕滓�隕丞援 ClassEscape :: CharacterEscape 縺ョ隧穂セ。縺ッ縲� CharacterEscape 隧穂セ。縺ァ譁�ュ励r蜿門セ励@縲√◎縺ョ譁�ュ励〒讒区�縺輔l繧� 1 隕∫エ�縺ョ CharSet 繧定ソ斐☆縲�

逕滓�隕丞援 ClassEscape :: CharacterClassEscape 縺ョ隧穂セ。縺ッ縲� CharacterClassEscape 隧穂セ。縺ァ CharSet 繧貞叙蠕励@縲√◎縺ョ CharSet 繧定ソ斐☆縲�

蜿り€�ュ蝣ア隗」隱ャ: ClassAtom 縺ッ縲� \b, \B, 蠕梧婿蜿ら�繧帝勁縺乗ョ九j縺ョ豁」隕剰。ィ迴セ縺ァ險ア縺輔l繧倶ササ諢上�繧ィ繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ繧剃スソ逕ィ縺ァ縺阪k縲� CharacterClass 蜀�Κ縺ォ縺翫>縺ヲ縲� \b 縺ッ蠕碁€€譁�ュ� (backspace character) 繧呈э蜻ウ縺励€∽ク€譁ケ \B 縺ィ蠕梧婿蜿ら�縺ッ繧ィ繝ゥ繝シ繧堤匱逕溘&縺帙k縲� ClassAtom 蜀�Κ縺ァ縺ョ蠕梧婿蜿ら�縺ョ菴ソ逕ィ縺ッ繧ィ繝ゥ繝シ繧貞シ輔″襍キ縺薙☆縲�

15.10.3 髢「謨ー縺ィ縺励※蜻シ蜃コ縺輔l繧� RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ (The RegExp Constructor Called as a Function)

15.10.3.1 RegExp(pattern, flags)

pattern 縺� [[Class]] 繝励Ο繝代ユ繧」縺� "RegExp" 縺ァ縺ゅk繧ェ繝悶ず繧ァ繧ッ繝� R 縺ァ縲√°縺、 flags 縺� undefined 縺ェ繧峨�縲� R 繧偵◎縺ョ縺セ縺セ霑斐☆縲ゅ◎縺�〒縺ェ縺代l縺ー RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ (繧サ繧ッ繧キ繝ァ繝ウ 15.10.4.1) 繧貞他蜃コ縺励€√◎繧後↓蠑墓焚 pattern 縺ィ flags 繧呈ク。縺励€√◎縺ョ繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ォ讒狗ッ峨&繧後k繧ェ繝悶ず繧ァ繧ッ繝医r霑斐☆縲�

15.10.4 RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ (The RegExp Constructor)

RegExp 縺� new 蠑上�荳€驛ィ縺ィ縺励※蜻シ蜃コ縺輔l繧九→縺阪€√◎繧後�繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ァ縺ゅk: 縺昴l縺ッ縲∵眠縺溘↓逕滓�縺輔l繧九が繝悶ず繧ァ繧ッ繝医r蛻晄悄蛹悶☆繧九€�

15.10.4.1 new RegExp(pattern, flags)

pattern 縺� [[Class]] 繝励Ο繝代ユ繧」縺� "RegExp" 縺ァ縺ゅk 繧ェ繝悶ず繧ァ繧ッ繝� R 縺ァ縲√°縺、 flags 縺� undefined 縺ェ繧峨�縲� P 繧� R 縺ョ讒狗ッ峨↓逕ィ縺�k pattern 縺ィ縺励€� F 繧� R 縺ョ讒狗ッ峨↓逕ィ縺�k flags 縺ィ縺吶k縲� pattern 縺� [[Class]] 繝励Ο繝代ユ繧」縺� "RegExp" 縺ァ縺ゅk 繧ェ繝悶ず繧ァ繧ッ繝� R 縺ァ縲√°縺、 flags 縺� undefined 縺ァ縺ェ縺�↑繧峨�縲� 萓句、� TypeError 繧呈兜縺偵k縲� 縺昴≧縺ァ縺ェ縺代l縺ー縲� P 繧� pattern 縺� undefined 縺ェ繧峨�遨コ譁�ュ怜�縲√◎縺�〒縺ェ縺代l縺ー ToString(pattern) 縺ィ縺励€� F 繧� flags 縺� undefined 縺ェ繧峨�遨コ譁�ュ怜�縲√◎縺�〒縺ェ縺代l縺ー ToString(flags) 縺ィ縺吶k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� global 繝励Ο繝代ユ繧」縺ッ縲� F 縺梧枚蟄� "g" 繧貞性繧√� true, 縺昴≧縺ァ縺ェ縺代l縺ー false 縺ァ縺ゅk Boolean 蛟、縺ォ險ュ螳壹&繧後k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� ignoreCase 繝励Ο繝代ユ繧」縺ッ縲� F 縺梧枚蟄� "i" 繧貞性繧√� true, 縺昴≧縺ァ縺ェ縺代l縺ー false 縺ァ縺ゅk Boolean 蛟、縺ォ險ュ螳壹&繧後k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� multiline 繝励Ο繝代ユ繧」縺ッ縲� F 縺梧枚蟄� "m" 繧貞性繧√� true, 縺昴≧縺ァ縺ェ縺代l縺ー false 縺ァ縺ゅk Boolean 蛟、縺ォ險ュ螳壹&繧後k縲�

F 縺� "g", "i", "m" 莉・螟悶�譁�ュ励r蜷ォ繧€縺ェ繧峨�縲√∪縺滉ク€譌ヲ蜃コ迴セ縺励◆繧ゅ�縺ィ蜷後§繧ゅ�繧貞性繧€縺ェ繧峨�縲∽セ句、� SyntaxError 繧呈兜縺偵k縲�

P 縺ョ譁�ュ励′譖ク蠑� Pattern 繧呈戟縺溘↑縺�↑繧峨�縲∽セ句、� SyntaxError 繧呈兜縺偵k縲ゅ◎縺�〒縺ェ縺代l縺ー縲∵眠隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医↓ Pattern 縺ョ隧穂セ。 ("compiling") 縺ォ繧医j蠕励i繧後k [[Match]] 繝励Ο繝代ユ繧」繧呈戟縺溘○繧九€� Pattern 縺ョ隧穂セ。縺御セ句、� SyntaxError 繧呈兜縺偵※繧ゅh縺�%縺ィ縺ォ豕ィ諢上€� (Note: pattern 縺� StringLiteral 縺ェ繧峨�縲� 譁�ュ怜�縺� RegExp 縺ォ繧医▲縺ヲ蜃ヲ逅�&繧後k蜑阪↓縲�€壼クク縺ョ繧ィ繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ縺ョ螟画鋤縺悟ョ溯。後&繧後k縲� RegExp 縺ォ繧医▲縺ヲ隱崎ュ倥&繧後k繧ィ繧ケ繧ア繝シ繝励す繝シ繧ア繝ウ繧ケ繧� pattern 縺ォ蜷ォ繧√↑縺代l縺ー縺ェ繧峨↑縺�↑繧峨�縲� StringLiteral 縺ョ蜀�ョケ縺ョ蠖「謌先凾縺ォ蜑企勁縺輔l繧九%縺ィ繧帝亟縺舌◆繧√↓縲� StringLiteral 蜀��譁�ュ� "\" 縺ッ繧ィ繧ケ繧ア繝シ繝励&繧後↑縺代l縺ー縺ェ繧峨↑縺�€�)

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� source 繝励Ο繝代ユ繧」縺ッ縲� P 縺ォ蝓コ縺・縺襲attern 縺ョ譖ク蠑上�螳溯」�セ晏ュ倥�譁�ュ怜�蛟、縺ォ險ュ螳壹&繧後k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� lastIndex 繝励Ο繝代ユ繧」縺ッ縲� 0 縺ォ險ュ螳壹&繧後k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� [[Prototype]] 繝励Ο繝代ユ繧」縺ッ縲� RegExp.prototype 縺ョ蛻晄悄蛟、縺ァ縺ゅk繧ェ繝ェ繧ク繝翫Ν縺ョ RegExp 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医↓險ュ螳壹&繧後k縲�

譁ー隕上↓讒狗ッ峨&繧後◆繧ェ繝悶ず繧ァ繧ッ繝医� [[Class]] 繝励Ο繝代ユ繧」縺ッ縲� "RegExp" 縺ォ險ュ螳壹&繧後k

15.10.5 RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ョ繝励Ο繝代ユ繧」 (Properties of the RegExp Constructor)

RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ョ縺ョ蜀�Κ [[Prototype]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� Function 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝� (繧サ繧ッ繧キ繝ァ繝ウ 15.3.4) 縺ァ縺ゅk縲�

蜀�Κ繝励Ο繝代ユ繧」縺ィ length 繝励Ο繝代ユ繧」 (蛟、縺ッ 2) 縺ョ莉悶↓縲� RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ッ谺。縺ョ繝励Ο繝代ユ繧」繧呈戟縺、:

15.10.5.1 RegExp.prototype

RegExp.prototype 縺ョ蛻晄悄蛟、縺ッ RegExp 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝� (繧サ繧ッ繧キ繝ァ繝ウ 15.10.6) 縺ァ縺ゅk縲�

縺薙�繝励Ο繝代ユ繧」縺ッ螻樊€ァ { DontEnum, DontDelete, ReadOnly } 繧呈戟縺、縺ケ縺阪〒縺ゅk縲�

15.10.6 RegExp 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」 (Properties of the RegExp Prototype Object)

RegExp 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�蜀�Κ [[Prototype]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� Object 繝励Ο繝医ち繧、繝励〒縺ゅk縲� RegExp 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�蜀�Κ [[Class]] 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� "Object" 縺ァ縺ゅk縲�

RegExp 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�縲∫峡閾ェ縺ョ valueOf 繝励Ο繝代ユ繧」繧呈戟縺溘↑縺�; 縺励°縺励↑縺後i縲� valueOf 繝励Ο繝代ユ繧」繧� Object 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医°繧臥カ呎価縺吶k縲�

RegExp 繝励Ο繝医ち繧、繝励が繝悶ず繧ァ繧ッ繝医�繝励Ο繝代ユ繧」縺ァ縺ゅk髢「謨ー縺ョ莉・荳九�隱ャ譏弱↓縺翫>縺ヲ縲√ヵ繝ャ繝シ繧コ "縺薙� RegExp 繧ェ繝悶ず繧ァ繧ッ繝�" 縺ッ縲�未謨ー蜻シ蜃コ縺励� this 蛟、縺ァ縺ゅk繧ェ繝悶ず繧ァ繧ッ繝医r蜿ら�縺吶k; this 蛟、 縺悟�驛ィ [[Class]] 繝励Ο繝代ユ繧」縺� "RegExp" 縺ョ繧ェ繝悶ず繧ァ繧ッ繝医〒縺ェ縺��エ蜷医�縲∽セ句、� TypeError 縺梧兜縺偵i繧後k縲�

15.10.6.1 RegExp.prototype.constructor

RegExp.prototype.constructor 縺ョ蛻晄悄蛟、縺ッ縲∫オ�セシ縺ソ RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ァ縺ゅk縲�

15.10.6.2 RegExp.prototype.exec(string)

豁」隕剰。ィ迴セ縺ォ蟇セ縺励※ string 縺ョ豁」隕剰。ィ迴セ繝槭ャ繝√r陦後>縲√�繝�メ縺ョ邨先棡繧貞性繧€ Array 繧ェ繝悶ず繧ァ繧ッ繝医€√∪縺滓枚蟄怜�縺ォ繝槭ャ繝√@縺ェ縺九▲縺溷�エ蜷医� null 繧定ソ斐☆縲�

譁�ュ怜� ToString(string) 縺ッ縲∵ャ。縺ョ繧医≧縺ォ豁」隕剰。ィ迴セ繝代ち繝シ繝ウ縺ョ逋コ逕溘r讀懃エ「縺輔l繧�:

  1. S 繧� ToString(string) 縺ョ蛟、縺ィ縺吶k縲�
  2. length 繧� S 縺ョ髟キ縺輔→縺吶k縲�
  3. lastIndex 繧� lastIndex 繝励Ο繝代ユ繧」縺ョ蛟、縺ィ縺吶k縲�
  4. i 繧� ToInteger(lastIndex) 縺ョ蛟、縺ィ縺吶k縲�
  5. global 繝励Ο繝代ユ繧」縺� false 縺ェ繧峨�縲� i = 0 縺ィ縺吶k縲�
  6. I < 0 縺セ縺溘� I > length 縺ェ繧峨�縲� lastIndex 繧� 0 縺ォ險ュ螳壹@縲� null 繧定ソ斐☆縲�
  7. [[Match]] 縺ィ蜻シ蜃コ縺励€∝シ墓焚縺ォ S 縺ィ i 繧剃ク弱∴繧九€� [[Match]] 縺� failure 繧定ソ斐@縺溘↑繧峨�縲� 繧ケ繝�ャ繝� 8 縺ク; 縺昴≧縺ァ縺ェ縺代l縺ー縲� r 繧偵◎縺ョ State 邨先棡縺ィ縺励€� 繧ケ繝�ャ繝� 10 縺ク縲�
  8. i = i+1 縺ィ縺吶k縲�
  9. 繧ケ繝�ャ繝� 6 縺ク縲�
  10. e 繧� r 縺ョ endIndex 蛟、縺ィ縺吶k縲�
  11. global 繝励Ο繝代ユ繧」縺� true 縺ェ繧峨�縲� lastIndex 繧� e 縺ォ險ュ螳壹☆繧九€�
  12. n 繧� r 縺ョ captures 驟榊�縺ョ髟キ縺輔→縺吶k縲� (縺薙l縺ッ縲�繧サ繧ッ繧キ繝ァ繝ウ 15.10.2.1 縺ョ NCapturingParens 縺ィ蜷後§蛟、縺ァ縺ゅk縲�)
  13. 谺。縺ョ繝励Ο繝代ユ繧」繧呈戟縺、譁ー縺励>驟榊�繧定ソ斐☆:
    • * index 繝励Ο繝代ユ繧」縺ッ縲∝ョ悟�縺ェ譁�ュ怜� S 蜀�〒繝槭ャ繝√@縺滄Κ蛻�枚蟄怜�縺ョ菴咲スョ縺ォ險ュ螳壹&繧後k縲�
    • * input 繝励Ο繝代ユ繧」縺ッ縲� S 縺ォ險ュ螳壹&繧後k縲�
    • * length 繝励Ο繝代ユ繧」縺ッ縲� n + 1 縺ォ險ュ螳壹&繧後k縲�
    • * 0 繝励Ο繝代ユ繧」縺ッ縲√�繝�メ縺励◆驛ィ蛻�枚蟄怜� (縺吶↑繧上■ 繧ェ繝輔そ繝�ヨ i 縺九i繧ェ繝輔そ繝�ヨ e 縺ョ蜑阪∪縺ァ縺ョ髢薙�S 縺ョ謌仙�) 縺ォ險ュ螳壹&繧後k縲�
    • * I > 0 縺九▽ In 縺ァ縺ゅk繧医≧縺ェ謨エ謨ー i 縺ョ縺昴l縺槭l縺ォ縺、縺�※縲� ToString(i) 繧貞錐蜑阪→縺吶k繝励Ο繝代ユ繧」縺ォ r 縺ョ captures 驟榊�縺ョ i 逡ェ逶ョ縺ョ隕∫エ�繧定ィュ螳壹☆繧九€�

15.10.6.3 RegExp.prototype.test(string)

蠑� RegExp.prototype.exec(string) != null 縺ィ蜷梧ァ倥〒縺ゅk縲�

15.10.6.4 RegExp.prototype.toString()

src 繧堤樟蝨ィ縺ョ豁」隕剰。ィ迴セ繧定。ィ縺� Pattern 縺ョ譖ク蠑上�譁�ュ怜�縺ィ縺吶k縲� src 縺ッ縲� source 繝励Ο繝代ユ繧」縺セ縺� RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ォ萓帷オヲ縺輔l繧九た繝シ繧ケ繧ウ繝シ繝峨→蜷御ク€縺ァ縺ゅ▲縺ヲ繧ゅ↑縺上※繧ゅh縺�; 縺溘□縲� src 縺檎樟蝨ィ縺ョ豁」隕剰。ィ迴セ縺ョ flags 繧剃シエ縺」縺ヲ RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ォ萓帷オヲ縺輔l縺溘↑繧峨�縲∫オ先棡縺ョ豁」隕剰。ィ迴セ縺ッ縲∫樟蝨ィ縺ョ豁」隕剰。ィ迴セ縺ィ蜷梧ァ倥↓謖ッ繧九∪繧上↑縺代l縺ー縺ェ繧峨↑縺�€�

toString 縺ッ縲∵枚蟄怜� "/", src, "/" 縺ョ騾」邨舌〒蠖「謌舌&繧後k譁�ュ怜�繧定ソ斐☆; global 繝励Ο繝代ユ繧」縺� true 縺ェ繧峨� "g"縲� ignoreCase 繝励Ο繝代ユ繧」縺� true 縺ェ繧峨� "i"縲� multiline 繝励Ο繝代ユ繧」縺� true 縺ェ繧峨� "m" 繧偵€�€」邨舌☆繧区枚蟄怜�縺ォ霑ス蜉�縺吶k縲�

NOTE 螳溯」��縲� src 蜀��迚ケ谿頑枚蟄励r繧ィ繧ケ繧ア繝シ繝励☆繧九◆繧√↓縲� RegExp 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ縺ク貂。縺輔l繧九た繝シ繧ケ縺ィ逡ー縺ェ繧九%縺ィ繧定ィア蜿ッ縺輔l縺ヲ縺�k src 縺ョ蛻ゥ逕ィ繧帝∈謚槭@縺ヲ繧医>縲ゆセ九∴縺ー縲� new RegExp("/") 縺九i蠕励i繧後k豁」隕剰。ィ迴セ縺ォ縺翫>縺ヲ縲� src 縺ッ縲∵焚縺ゅk蜿ッ閭ス諤ァ縺ョ荳ュ縺九i縲� "/" 縺セ縺溘� "\/" 縺ァ縺ゅj縺医k縲ょセ瑚€��縲∵嶌蠑� RegularExpressionLiteral 繧呈戟縺、 toString 蜻シ蜃コ縺励�螳悟�縺ェ邨先棡 ("/\//") 繧定ィア蜿ッ縺吶k縲�

15.10.7 RegExp 繧、繝ウ繧ケ繧ソ繝ウ繧ケ縺ョ繝励Ο繝代ユ繧」 (Properties of RegExp Instances)

RegExp 繧、繝ウ繧ケ繧ソ繝ウ繧ケ縺ッ縲∽ク願ィ倥↓謖�ョ壹&繧後k縺昴� [[Prototype]] 繧ェ繝悶ず繧ァ繧ッ繝医°繧峨�繝ュ繝代ユ繧」繧堤カ呎価縺励€√∪縺滓ャ。縺ョ繝励Ο繝代ユ繧」繧呈戟縺、縲�

15.10.7.1 source

source 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� 迴セ蝨ィ縺ョ豁」隕剰。ィ迴セ繧偵≠繧峨o縺� Pattern 縺ョ譖ク蠑上�譁�ュ怜�蛟、縺ァ縺ゅk縲ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ縲∝ア樊€ァ { DontDelete, ReadOnly, DontEnum } 繧呈戟縺、縺ケ縺阪〒縺ゅk縲�

15.10.7.2 global

global 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� flags 縺梧枚蟄� "g" 繧貞性繧€縺九←縺�°繧堤、コ縺� Boolean 蛟、縺ァ縺ゅk縲ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ縲∝ア樊€ァ { DontDelete, ReadOnly, DontEnum } 繧呈戟縺、縺ケ縺阪〒縺ゅk縲�

15.10.7.3 ignoreCase

ignoreCase 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� flags 縺梧枚蟄� "i" 繧貞性繧€縺九←縺�°繧堤、コ縺� Boolean 蛟、縺ァ縺ゅk縲ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ縲∝ア樊€ァ { DontDelete, ReadOnly, DontEnum } 繧呈戟縺、縺ケ縺阪〒縺ゅk縲�

15.10.7.4 multiline

multiline 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲� flags 縺梧枚蟄� "m" 繧貞性繧€縺九←縺�°繧堤、コ縺� Boolean 蛟、縺ァ縺ゅk縲ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ縲∝ア樊€ァ { DontDelete, ReadOnly, DontEnum } 繧呈戟縺、縺ケ縺阪〒縺ゅk縲�

15.10.7.5 lastIndex

lastIndex 繝励Ο繝代ユ繧」縺ョ蛟、縺ッ縲∵枚蟄怜�縺ョ谺。縺ョ繝槭ャ繝√r髢句ァ九☆繧倶ス咲スョ繧堤音螳壹☆繧区紛謨ー縺ァ縺ゅk縲ゅ%縺ョ繝励Ο繝代ユ繧」縺ッ縲∝ア樊€ァ { DontDelete, DontEnum } 繧呈戟縺、縺ケ縺阪〒縺ゅk縲�

Page Contents

Issued: / Revised: / All rights reserved. © 2002-2016 TAKI