2015-06-30 118 views
1

我有一個電話號碼text-field.Now,我想通過java腳本申請正則表達式。因爲我使用下面的code.but它不接受10 digit.would任何告訴我,下面的代碼有什麼問題。正則表達式不適用於電話號碼字段

Java腳本代碼: -

function val(value) { 
    var p = phonevalue1 
    p = p.replace(/[^\d]*/gi, "") 
    if (p.length <= 5) { 
     value.value = p; 
    } 
    else if (p.length > 5 && p.length < 9) { 
     var a = p.substring(0, 5); 
     var b = p.substring(5, p.length); 
     var c = a + "-" + b; 
     value.value = c; 
    } 

    else if (p.length >= 9) { 
     var len = p.length; 
     var a = p.substring(0, 5); 
     var b = p.substring(5, len); 
     var c = a + "-" + b; 
     value.value = c.substring(0, 10); 
    } 
} 
+0

爲什麼'ig'都_p = p.replace(/ [^ \ d] */GI, 「」)_ – ozil

+0

它的正則表達式的模式。 – acasdfsdfgh

+0

這是什麼問題?嘗試指定什麼是預期的結果以及你得到的結果。 –

回答

0

從我可以告訴你,你下面

  1. 小於或等於5位數只是添加位數值屬性的對象
  2. 6 - 8位數字在第五位後加上連字符,如12345-678
  3. 9位或更大12345-6789

NOTES:

value.value裝置爲{};

phonevalue1在函數中未定義,所以我將假定它在父範圍中定義並且是一些數字字符串。

您提供的代碼可以簡化一下。我會做一些調整,你必須調整你的代碼塊處理函數的方式。 K +

function val(value) { 
    var p = phonevalue1 
    p = p.replace(/[^\d]*/gi, "") 
    if (p.length <= 5) { 
    value.value = p; 
    } 
    else if (p.length > 5 && p.length < 9) { 
    var a = p.substring(0, 5); 
    var b = p.substring(5, p.length); 
    var c = a + "-" + b; 
    value.value = c; 
    } 

    else if (p.length >= 9) { 
    var len = p.length; 
    var a = p.substring(0, 5); 
    var b = p.substring(5, len); 
    var c = a + "-" + b; 
    value.value = c.substring(0, 10); 
    } 
} 

更改這個...

注:是你的對象,你說,

var value = {}; 
var phonevalue1 = "12345"; 
var phonevalue2 = "12345678"; 
var phonevalue3 = "1234567890"; 

value.value = phonevalue1.replace(/(^\d{5})/, "$1-").replace(/-$/, ''); 
=> { value: "12345" }; 

value.value = phonevalue2.replace(/(^\d{5})/, "$1-").replace(/-$/, ''); 
=> { value: "12345-678" }; 

value.value = phonevalue3.replace(/(^\d{5})/, "$1-").replace(/-$/, ''); 
=> { value: "12345-67890" }; 

如果你想使用的功能,你有,我會盡量做同樣的事情,但不建議你的代碼結構的方式,因爲它是不必要的漫長和混亂。

function addHyphen(numString){ 
    return numString.replace(/(^\d{5})/, "$1-").replace(/-$/, ''); 
} 

value.value = addHyphen(phonevalue1); 

希望這有助於...