URLが

// http://wonderland.com/street/愛媛県
app.get(/^\/street\/.{1,50}$/)
console.log(req.params[0])
// 愛媛県
// パスが通る

となる場合はOKですが、
下記のようにもし/id/数値が入っていても処理するにはどうすればよいでしょうか?

// http://wonderland.com/street/Улаанбаатар/id/1230515654
app.get(/^\/street\/(.{1,50}$)(\/id\/([0-9]{1,3}$))?$/)
console.log(req.params[0])
// Улаанбаатар/id/1230515654
// 4桁以上でもパスが通ってしまう

やりたいことは

/street/(記号以外の日本語や英語、数字、外国語50文字以内)
/street/(記号以外の日本語や英語、数字、外国語50文字以内)/id/(数字3桁)

です。なるべくセキュアにしたいのですがstreetのあとの文字列は\w{1,50}では都合がわるかったのでドットを使用しました。

\w
単語に使用される任意の文字と一致します。アンダースコアも含まれます。'[A-Za-z0-9_]' と同じ意味になります。

.
"\n" を除く任意の 1 文字に一致します。'\n' など、任意の文字と一致するには、'[.\n]' などのパターンを指定します。

また、正規表現を使うとややこしうなるのでreq.params.name :nameなどは使用しておりません。