1

次の基準に一致する必要があるJavaScriptのフィールド(デジコードを表す)を検証するために使用する正規表現を書くのを手伝ってくれませんか?

  • 4 ~ 6 個の数字 (0 ~ 9) が必要です
  • 先頭または末尾に 1 つの * (スター) または 1 つの # (シャープ) が必要です

したがって、次のように動作します。

  • 1234*
  • *12345
  • 56789#
  • #456789

そして、以下は機能しません:

  • 1234
  • 1*234
  • *1234*
  • *1234#
  • 1234*#
  • abcde

どうもありがとう!!

4

4 に答える 4

2
var s,
    rg1=/^[*#]\d{4,6}$/,
    rg2=/^\d{4,6}[*#]$/;

s="1234*"; console.info(rg1.test(s)||rg2.test(s));
s="*12345"; console.info(rg1.test(s)||rg2.test(s));
s="56789#"; console.info(rg1.test(s)||rg2.test(s));
s="#456789"; console.info(rg1.test(s)||rg2.test(s));

s="1234"; console.info(rg1.test(s)||rg2.test(s));
s="1*234"; console.info(rg1.test(s)||rg2.test(s));
s="*1234*"; console.info(rg1.test(s)||rg2.test(s));
s="*1234#"; console.info(rg1.test(s)||rg2.test(s));
s="1234*#"; console.info(rg1.test(s)||rg2.test(s));
s="abcde"; console.info(rg1.test(s)||rg2.test(s));
于 2012-05-24T10:33:58.033 に答える
2
^(?:[*#]\d{4,6}|\d{4,6}[*#])$

ここでRegexrを参照してください

正規表現に関するいくつかの基本を読みたいと思うかもしれません:絶対にすべてのプログラマーが正規表現について知っておくべきこと(私自身のブログ投稿) ここで使用したすべてがそこでカバーされています。

于 2012-05-24T10:30:16.577 に答える
1

これがより最適になるかどうかはわかりません。node.js でテスト済み:

var x = new RegExp(/^[*#]\d{4,6}$|^\d{4,6}[*#]$/);
于 2012-05-24T10:27:50.667 に答える
1

これでうまくいくはずです。

var expression = /^([*#]?\d{4,6}|\d{4,6}[*#]?)$/;

そして、少なくとも * または # が常に存在する必要がある場所、つまり 1234 だけではないマッチング

var expression = /^([*#]\d{4,6}|\d{4,6}[*#])$/;
于 2012-05-24T10:30:39.650 に答える