2012-05-24 60 views
1

任何人都可以請幫我寫一個正則表達式,我將用來驗證一個字段(代表一個digicode)在JavaScript中必須符合以下標準嗎?正則表達式來匹配digicode(數字,星星和尖銳)

  • 需要具有4至6個號碼(0到9)
  • 需要具有1 *(星號)或1#(尖銳)無論是在開始時或結束時

所以以下工作:

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

而下面不工作:

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

非常感謝!

+0

究竟有什麼問題了嗎?獲取輸入字段的值?創建正則表達式?在JavaScript中使用正則表達式?表達式本身非常簡單,並且http://www.regular-expressions.info/是一個很好的開始(也就是JavaScript)。 –

+0

@FelixKling我試圖驗證一個字段(就像它在問題中所說的那樣),即用戶輸入了某些內容,我必須檢查它是否正確。在詢問之前,我在網站上花了一個小時,但找不到任何東西...... – Johann

+0

但總體問題由多個部分組成:(a)開始驗證。 (b)獲取輸入值。 (c)用正則表達式驗證值。你知道些什麼?因爲所有的答案都只是給你正則表達式,你可以在瀏覽http://www.regular-expressions.info/後輕鬆創建正則表達式。 –

回答

1

不知道這是否可以更優化。 測試中的Node.js:

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

不符合'56789#'。 –

+0

工作版本:var x = new RegExp(/ ^([*#])(\ d){4,6} $ | ^(\ d){4,6}([*#])$ /); – Zlatko

1

這應該適合你;

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

及配套那裏總是必須至少在*或#,即不只是1234

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

這不驗證1234沒有*或#嗎? – Johann

+1

啊是的我的錯誤,我誤讀了,必須刪除?'s ...我會編輯主帖 – cmilhench

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

你可以在正則表達式本身中添加OR操作 - 只需將它們放在一個模式中,然後添加(單)管之間。 – Zlatko

+1

@zladuric:你說得對,但我不發表這個解決方案,因爲它與其他人非常相似。 –

+0

你有一個點。 OP可以嘗試如果(s ===「* 1111」|| s ===「#1111」|| s =「* 1112」... Zlatko