100%保証できる場合:
- 文字列は2文字または3文字です
- 常に1つ以上の素数/コンマがあります
文字とマークの前、後、または間に(改行を除いて)空のスペースはありません。
次を使用できます。
/^([a-zA-Z]{2,3})('+|,+)$/gm
var arr = /^([a-zA-Z]{2,3})('+|,+)$/gm.exec("pok'''");
arr === ["pok'''", "pok", "'''"];
var arr = /^([a-zA-Z]{2,3})('+|,+)$/gm.exec("baf,,,");
arr === ["baf,,,", "baf", ",,,"];
もちろん、ある程度の正気を保存し、その正規表現を変数として保存します。
また、警告として、次のように正規表現を処理していない場合:一致が見つからない場合-foo',''
マークを混合して一致させようとした場合、または0-1または4+文字、または0マークがある場合。 ....次に、配列を取得する代わりに、を取得しますnull
。
だからあなたはこれを行うことができます:
var reg = /^([a-zA-Z]{2,3})('+|,+)$/gm,
string = "foobar'',,''",
result_array = reg.exec(string) || [string];
この場合、execの結果はnullです。||を置くことによって (または)そこで、元の文字列を含む配列をindex-0として返すことができます。
なんで?
実行が成功した結果には3つのスロットがあるためです。[*string*, *letters*, *marks*]
。のような文字を読みたくなるかもしれませんresult_array[1]
。しかし、一致が失敗した場合、result_array === null
JavaScriptは試してみるとあなたに叫びますnull[1]
。
したがって、失敗したexecの最後に配列を返すとresult_array[1] === undefined
、JSエラーではなく、取得できます(つまり、パターンに一致するものがなかったため、index-1に文字がありません)。