あなたのコードでは:
var temps[i] = "text!../tmp/widgets/tmp_widget_header.html";
var thisString = temps[i].regexp(/.*tmp_$.*\.*/) )
あなたが言っています:
「任意の数の文字で始まり、「tmp_」、入力の終わり、任意の数のピリオドが続く任意の文字列に一致します。」
.* : Any number of any character (except newline)
tmp_ : Literally "tmp_"
$ : End of input/newline - this will never be true in this position
\. : " . ", a period
\.* : Any number of periods
さらに、regex()関数を使用する場合は、スラッシュを使用した正規表現表記のようにvar re = new RegExp("ab+c")
、または使用しない文字列表記を使用して、文字列を渡す必要があります。var re = new RegExp('ab+c')
また、余分な括弧または欠落した括弧があり、実際に文字がキャプチャされていません。
あなたがしたいことは:
"入力の開始、任意の文字の1つ以上、" tmp_ "、単一のピリオド、任意の文字の1つ以上、入力の終了が続く文字列を検索します。t 1つ以上の文字が含まれています。その文字列をキャプチャしてください。」
それで:
var string = "text!../tmp/widgets/tmp_widget_header.html";
var re = /^.+tmp_(.+)\..+$/; //I use the simpler slash notation
var out = re.exec(string); //execute the regex
console.log(out[1]); //Note that out is an array, the first (here only) catpture sting is at index 1
この正規表現の/^.+tmp_(.+)\..+$/
意味:
^ : Match beginning of input/line
.+ : One or more of any character (except newline), "+" is one or more
tmp_ : Constant "tmp_"
\. : A single period
.+ : As above
$ : End of input/line
これRegEx('^.+tmp_(.+)\..+$');
を使用する場合RegEx();
は、スラッシュマークがなく、代わりに引用符(シングルまたはダブルで機能します)を使用して文字列として渡すこともできます。
これで、これも一致var string = "Q%$#^%$^%$^%$^43etmp_ebeb.45t4t#$^g"
しout == 'ebeb'
ます。したがって、特定の用途に応じて、任意の文字(改行を除く)を表すために使用される「。」を括弧で囲まれた「[]」文字リストに置き換えることができます。これにより、不要な結果が除外される可能性があります。マイレージは異なる場合があります。
詳細については、https ://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressionsをご覧ください。