簡體   English   中英

正則表達式以匹配數字代碼(數字,星號和尖角)

[英]Regex to match a digicode (digit, star and sharp)

誰能幫我寫一個正則表達式,用它來驗證javascript中必須符合以下條件的字段(表示數字代碼)?

  • 需要有4到6個數字(0到9)
  • 在開頭或結尾處需要有1 *(星號)或1#(清晰)

因此,以下工作:

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

並且以下無效:

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

非常感謝!!

^(?:[*#]\d{4,6}|\d{4,6}[*#])$

在Regexr上查看

您可能需要閱讀有關正則表達式的一些基礎知識: 每個程序員絕對應該了解正則表達式 (我自己的博客文章),其中涵蓋了我在這里使用的所有內容。

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));

不知道這是否可以達到最佳效果。 在node.js中測試:

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

這應該為您工作;

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

匹配必須始終至少在*或#上匹配的位置,即不僅是1234

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM