1

RegExpマッチさせるJavaScriptの書き方

'/api/users'
'/api/users/'
'/api/users?age=22'
'/api/users/?age=22'

だがしかし

'/api/users/id'

Regex私はこれまでに試しました:

new RegExp('^' + '/api/users' + '\/?\\S*' + '$') 
4

4 に答える 4

0

次のようなパターンが機能するはずです。

^/api/users/?(\?age=22)?$

22または、年齢パラメーターの単なるリテラル以上のものと一致させたいと仮定します。

^/api/users/?(\?age=\d+)?$

これは、リテラル/api/users、その後にオプションの\、その後にオプションの?age=と 1 つ以上の数字が続くものと一致します。

もちろん、これを正規表現リテラルとして構築するときは、スラッシュをエスケープする必要があります。

^/\/api\/users\/?(\?age=\d+)?/$

または、バックスラッシュをエスケープしてRegExpコンストラクターを使用します。

new RegExp("^/api/users/?(\\?age=\\d+)?$")
于 2013-09-20T16:36:42.110 に答える
0

/idafter に否定先読みを使用します/api/users

/^\/api\/users(?!\/id).*$/

例を使用したこの動作のライブ デモを参照してください。

于 2013-09-21T01:02:07.613 に答える
0

私の理解が正しければ、 age パラメーターで始まる場合にのみ、クエリ文字列を照合する必要があります。

/\api\/users\/?(\?age=\d+|$)/

\api\/users\/?/api/users または api/users/ に一致します

(\?age=\d+|$)?age=22 または文字列の末尾 ($) のいずれかに一致します

[編集] あなたのコメントに基づいて、より簡単な式:

/\api\/users\/?(\?|$)/

(\?|$)クエリ文字列の先頭 (?) または文字列の末尾 ($) に一致します。

于 2013-09-20T16:47:31.583 に答える
0

これらの文字列を完全に一致させて条件として使用するには、.test(subjectString) を使用できます。

(/^\/api\/users\/?(\?age=\d+)?$/).test(subjectString)
于 2013-09-20T17:28:04.687 に答える