2017-05-10 9 views
-1

正規表現を取得しようとしていますが、そうではありません。それは小さなものでなければなりませんが、私はいくつかの助けをすることができます。私はhttps://regex101.com/で正規表現テスターを試してみました。それは私が正しくしていないと言いましたが、私のコードでは動作しません。javascriptで特定の文字の後に任意の数字が続く正規表現を取得しようとしています

スペース文字Vまたは0〜9スペース文字tまたはT 0と9スペースの間にはスペース番号

を間にVスペースなし番号:

は、私は、文字列を見て、の一致があるかどうかを確認したいです

例: "V5のT2" または "V5 T2"

はここではJavaScript/jQueryの:

if (mystring.indexOf(/v[0-9] t[0-9]/i) > -1) { 
    console.log("found!"); 
} else { 
    console.log("not found!"); 
} 

誰もが、私が間違ってやっているものを私にしてください教えてください。私は正規表現を初めて使う人です。

+0

'indexOf'は正規表現では機能しません。 'match'や' exec'や 'test'を使います – anubhava

答えて

3

indexOfは正規表現を受け入れません。文字列を受け入れます。だから、あなたの正規表現は文字列に変換され、その後は一致しません。あなたは試合をチェックしたい場合は

RegExp#testを使用します。文字列内のどこかに見える

if (/v[0-9] t[0-9]/i.test(mystring)) { 
    // Yes 
} else { 
    // No 
} 

注意を。

また、[0-9]\dであるため、正規表現は/v\d t\d/iになる可能性があります。

var mystring = "foo V5 T7 bar"; 
 
if (/v\d t\d/i.test(mystring)) { 
 
    console.log("found!"); 
 
} else { 
 
    console.log("not found!"); 
 
}
場合は、あなたの代わりに String#matchまたは RegExp#execを使用し、その結果の indexプロパティを見てみたい、マッチが発生した場所 を知るために必要な
var mystring = "foo V5 T7 bar"; 
 
var match = /v\d t\d/i.exec(mystring); 
 
if (match) { 
 
    console.log("Found at " + match.index); 
 
} else { 
 
    console.log("Not found"); 
 
}

+0

ありがとうございました!これは正解です。 – LauraNMS

+1

この場合、テストの代わりに 'match'が必要です(一致/不一致の場合のみtrue/falseを返します):' 'foo V5 T7 bar'.match(/ v \ dt \ d/i) ["V5 T7"、インデックス:4、入力: "foo V5 T7 bar"] '(インデックス0は文字列の一致部分です)。 – SVSchmidt

+0

@SVSchmidt:いいえ、一致するものがあるかどうかを確認するのに 'match'は必要ありません**。それはまさに 'test'の目的です。 –

関連する問題