1

文字列が「files/」で始まったり、「.js」で終わったりする場合、文字列をテストするにはどうすればよいですか?

例:

  • test/test2/test.html --> true
  • ファイル/test2/test.html --> false
  • test/test2/test .js --> false
  • ファイル/test2/test .js --> false

これまでのところ、次の正規表現があります。(^(?!files\/)).*?((?!\.js)$)

これは「files/」では機能しますが、「.js」では機能しません。

編集: 誤解して申し訳ありません。文字列は、文字列が「files/」で始まらず、「.js」で終わらない場合にのみ一致する必要があります。

4

5 に答える 5

3

あなたの最後のネガは、先読みではなく、後ろ向きであるべきです. テストの時点で、あなたはすでに.js

^(?!files\/).*(?<!\.js)$
于 2012-10-16T17:19:24.757 に答える
2

これは、必要なことを行う正規表現です。

(^(?!files\/)).*((?!\.js).{3}$)

最後の文字の前に「.js」がないかどうかを確認していましたが、これは常に true です。

于 2012-10-16T17:19:34.387 に答える
1
!/^files\/|\.js$/.test('files/test2/test.js') -> false
!/^files\/|\.js$/.test('files/test2/test.html') -> false
!/^files\/|\.js$/.test('test/test2/test.js') -> false
!/^files\/|\.js$/.test('test/test2/test.html') -> true
于 2012-10-16T16:56:12.880 に答える
1
var re = /^files\/.*|.*\.js$/;
alert(re.test('your-strings'));

編集

心配する必要はありません。結果を反転するだけです。

var re = /^files\/.*|.*\.js$/;
alert(!re.test('your-strings'));
于 2012-10-16T17:01:09.757 に答える
1

この正規表現を使用できます

^(files/.*|.*\.js)$

ファイルや js で終わる、または始まる文字列が必要ないため、上記の正規表現を使用してこれを行います。

if(/*regex matches the string*/)
{
//you dont need this string
}
else
{
//you do need this string
}
于 2012-10-16T17:02:13.320 に答える