これはあなたが唯一の一度か二度行う必要がある何かであるならば、私は他の回答で提案されているようあたり・ケースでそれをやってスティックと思います。
しかし、多くのことを行う必要がある場合は、いくつかのヘルパー関数が読みやすさを向上させる可能性があります。たとえば:あなたはこれらの機能を使用したい場合は
var lower = /[a-z]/,
upper = /[A-Z]/,
digit = /[0-9]/;
// All of these are equivalent, and will evaluate to /(?:a-z)|(?:A-Z)|(?:0-9)/
var anum1 = RegExp.any(lower, upper, digit),
anum2 = lower.or(upper).or(digit),
anum3 = lower.or(upper, digit);
そしてここでは、コードは次のとおりです。
RegExp.any = function() {
var components = [],
arg;
for (var i = 0; i < arguments.length; i++) {
arg = arguments[i];
if (arg instanceof RegExp) {
components = components.concat(arg._components || arg.source);
}
}
var combined = new RegExp("(?:" + components.join(")|(?:") + ")");
combined._components = components; // For chained calls to "or" method
return combined;
};
RegExp.prototype.or = function() {
var args = Array.prototype.slice.call(arguments);
return RegExp.any.apply(null, [this].concat(args));
};
選択肢が非キャプチャグループで包み、論理和演算子と組み合わせて、この幾分作っていますより複雑な正規表現のための強力なアプローチ。
の前に、のヘルパー機能を呼び出す必要があります。
2つの別々の正規表現がありますか、 '/ [a-zA-Z] /'だけが必要ですか? –
私はそれを知っています....これが可能かどうかを知る必要があります –
[Combine Regexp](http://stackoverflow.com/questions/869809/combine-regexp)の可能な複製 –