2010-10-06 89 views
-1

幫我優化正則表達式幫我優化正則表達式

<form id='myForm'> 

Enter phone number:<input type="text" id='idMyText' name="myText" onKeyUp="alphaToNum(this.value)"> 
</form> 

<script> 
// on each keypress in input box, I want to capture key pressed, 
// determine if key pressed belong to group of identified characters 
// if, so then convert to specified numeric equivalent and return character 
// to text box. 
// This mapping corresponds to numeric characters on blackberry device. 
// Normally user has to press alt+letter to get numbers. This will provide 
// quicker access to numeric characters on for numeric fields 

function alphaToNum(e) { 
    x = e; 
    x = (x.replace(/W/, "1")); 
    x = (x.replace(/w/, "1")); 
    x = (x.replace(/E/, "2")); 
    x = (x.replace(/e/, "2")); 
    x = (x.replace(/R/, "3")); 
    x = (x.replace(/S/, "4")); 
    x = (x.replace(/D/, "5")); 
    x = (x.replace(/F/, "6")); 
    x = (x.replace(/Z/, "7")); 
    x = (x.replace(/X/, "8")); 
    x = (x.replace(/C/, "9")); 
    document.getElementById('idMyText').value = x; 
} 

</script> 
+1

重複的:http://stackoverflow.com/questions/3873371/javascript-capture-input-and-convert-characters/3873638#3873638 – BGerrissen 2010-10-06 14:48:38

+0

那豈不是更自然地用「XCV」爲你的最後一行?從左側的S到Z ..有點有趣。 – 2010-10-06 14:56:59

+0

不是我的決定。問RIM! – robert 2010-10-06 15:19:29

回答

2

您可以使用/i修改,以便/W/i將同時匹配wW(等)。但總的來說,這看起來更像是一個翻譯表的工作 - 你只是替換單個字母,所以正則表達式對此有點矯枉過正。

0

這對我有效......在另一個線程中回答..謝謝!

<form id='myForm'> 
Enter phone number:<input type="text" id='idMyText' name="myText" onKeyUp="alphaToNum(this.value)"> 
</form> 
<script> 

var conversionMap = {W:1,E:2,R:3,S:4,D:5,F:6,Z:7,X:8,C:9, 
        w:1,e:2,r:3,s:4,d:5,f:6,z:7,x:8,c:9}; 

function alphaToNum(){ 
    var field = document.getElementById('idMyText'); 
    var value = field.value; 
    var chr = value[value.length-1]; 
    if(conversionMap[chr]) { 
     field.value = value.substr(0,value.length-1) + conversionMap[chr]; 
    } 
    // prevent memory leak. 
    field = null; 
} 

</script> 
+0

有關更多討論,請參閱http://stackoverflow.com/questions/3873371/javascript-capture-input-and-convert-characters! – robert 2010-10-06 15:20:40