2016-08-10 5 views
0

私はjavascriptでregexの初心者です。私はjavascriptでregexを使用することに固執しています。RegExpをjavascriptで使用するには?

私は2つのscenerio

1)私はaaa/+/bbb/+のような文字列を持っているが、私は正規表現を使用して文字列aaa/1/bbb/hello123aaa/1/bbb/と、この文字列にマッチさせたいとの両方がtrueを返す必要があります。私はその後、AAA/1/BBB私は、文字列AAAを持っている場合、それはfalse

2)を与える必要があります/#を渡す場合には、上記のすべての文字列にマッチし、いずれかが私を助けることができる

真returmn必要がありますか?

+0

あなたは '+'と '#'の意義があるかについて、より具体的なことはできますか? '+'は1つ以上の数字と文字に一致するように見えますが、明確ではありません。 – 4castle

+0

'2)もし私が文字列aaa /#を持っていれば、上記の全ての文字列にマッチしてtrueに戻ります - いいえ、そうではありません –

+0

@JaromandaX説明できますか?彼らは単にカスタムワイルドカード文字を定義しています。私は '# 'がその意味を持つために声を出してはいけないとは思わない。 – 4castle

答えて

0

正規表現^aaa\/[0-9]+\/bbb\/[\w\d]*$は、以下の文字列一致します。これらの文字列が一致しません

aaa/1/bbb/hello123 
aaa/1/bbb/ 

を:

aaa/1/bbb 

私はあなたの2番目のシナリオについては不明だ - あなたは正規表現がすべきことを言っています文字列aaa/#にも一致しますか?正規表現では、+[^/]*に変換でしょう

var re = /^aaa\/[0-9]+\/bbb\/[\w\d]*$/; 
var matches = re.test("aaa/1/bbb/"); 
if (matches) { console.log("it matches!"); } 
+1

're.test(str)'を使って一致するものがあるかどうかを確認します。 – 4castle

+0

ありがとう4castle - そのメソッドについて忘れて、更新されます。 –

1

、および#.*に変換します:

あなたはそうのようなJavaScriptで正規表現を使用することができます。

次のステップは、入力文字列内の特殊文字をエスケープすることです。 This regexにその目的があります。 +は特殊文字なので、手動でエスケープする必要があります。

RegExp.escape= function(s) { 
 
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 
 
}; 
 

 
function matchesPattern(pattern, input) { 
 
    pattern = RegExp.escape(pattern);   // escape special characters 
 
    pattern = pattern.replace(/\\\+/g, "[^/]*"); // replace '\+' 
 
    pattern = pattern.replace(/#/g, ".*");  // replace '#' 
 
    pattern = new RegExp("^" + pattern + "$"); // construct regex 
 
    return pattern.test(input);     // test input 
 
} 
 

 
console.log(matchesPattern("aaa/+/bbb/+", "aaa/1/bbb/hello123")); 
 
console.log(matchesPattern("aaa/+/bbb/+", "aaa/1/bbb/")); 
 
console.log(matchesPattern("aaa/+/bbb/+", "aaa/1/bbb")); 
 

 
console.log(matchesPattern("aaa/#", "aaa/1/bbb/hello123")); 
 
console.log(matchesPattern("aaa/#", "aaa/1/bbb/")); 
 
console.log(matchesPattern("aaa/#", "aaa/1/bbb"));

関連する問題