括弧で囲まれた文字列を返す正規表現を書き込もうとしています。たとえば、文字列 "("と ")"の間にある文字列を取得します。
I expect five hundred dollars ($500).
戻る
$500
Javascriptで2つの文字列の間の文字列を取得する 正規表現が見つかりました
しかし、私は正規表現が初めてです。正規表現で '('、 ')'を使う方法がわかりません
あなたは(括弧にマッチする)エスケープされた(\
で)括弧のセットとあなたのキャプチャグループを作成する通常の括弧のグループを作成する必要があります:
var regExp = /\(([^)]+)\)/;
var matches = regExp.exec("I expect five hundred dollars ($500).");
//matches[1] contains the value between the parentheses
console.log(matches[1]);
壊す:
\(
:左括弧に一致(
:グループのキャプチャを開始[^)]+
:1つ以上の)
以外の文字と一致)
:グループのキャプチャを終了\)
:閉じ括弧を一致させるこれは RegExplained に関する視覚的な説明です。
文字列操作を試してください。
var txt = "I expect five hundred dollars ($500). and new brackets ($600)";
var newTxt = txt.split('(');
for (var i = 1; i < newTxt.length; i++) {
console.log(newTxt[i].split(')')[0]);
}
または正規表現(、これはやや遅い 上記と比較して遅いです。
var txt = "I expect five hundred dollars ($500). and new brackets ($600)";
var regExp = /\(([^)]+)\)/g;
var matches = txt.match(regExp);
for (var i = 0; i < matches.length; i++) {
var str = matches[i];
console.log(str.substring(1, str.length - 1));
}
一時的なグローバル変数の使用を避けるために、 Mr_Green's answer を関数型プログラミングスタイルに移植しました。
var matches = string2.split('[')
.filter(function(v){ return v.indexOf(']') > -1})
.map( function(value) {
return value.split(']')[0]
})
単純解
注意:この問題では、この解決方法は文字列のように単一の "("と ")"しか持たない文字列に対して使用されます。
("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();
通貨記号の後の数字だけの場合:\(.+\s*\d+\s*\)
は動作するはずです
かっこ内のものは\(.+\)
括弧の内側の部分文字列を内側の括弧を除いて一致させるには、次のようにします。
\(([^()]*)\)
パターン。 正規表現のデモ を参照してください。
JavaScriptでは、次のように使います。
var rx = /\(([^()]*)\)/g;
パターン詳細
\(
- (
文字([^()]*)
- グループ1をキャプチャする:(
と)
以外の0以上の任意の文字に一致する 否定文字クラス\)
- )
文字.全体を一致させるには、Group 0の値を取得します。括弧内のテキストが必要な場合は、Group 1の値を取得します。
var strs = ["I expect five hundred dollars ($500).", "I expect.. :( five hundred dollars ($500)."];
var rx = /\(([^()]*)\)/g;
for (var i=0;i<strs.length;i++) {
console.log(strs[i]);
// Grab Group 1 values:
var res=[], m;
while(m=rx.exec(strs[i])) {
res.Push(m[1]);
}
console.log("Group 1: ", res);
// Grab whole values
console.log("Whole matches: ", strs[i].match(rx));
}
var str = "I expect five hundred dollars ($500) ($1).";
var rex = /\$\d+(?=\))/;
alert(rex.exec(str));
$で始まり、その後に ')'が続く最初の数字と一致します。 ')'は試合には含まれません。コードは最初の一致で警告します。
var str = "I expect five hundred dollars ($500) ($1).";
var rex = /\$\d+(?=\))/g;
var matches = str.match(rex);
for (var i = 0; i < matches.length; i++)
{
alert(matches[i]);
}
このコードは、すべての一致について警告します。
参考文献:
"?= n"を検索します http://www.w3schools.com/jsref/jsref_obj_regexp.asp
「x(?= y)」を検索します https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp