javascript - 關于正則表達式的問題
問題描述
<!DOCTYPE html> <html lang='en'> <head> <meta charset='utf-8' /> <title>判斷數字是否為兩位數</title> <style type='text/css'>body {font: 12px/1.5 arial;text-align: center;}.f-text {width: 50px;border: 1px solid #ccc;background: #f0f0f0;font-family: inherit;padding: 3px;margin-right: 10px;}</style><script type='text/javascript'>window.onload = function() {var aInput = document.getElementsByTagName('input');var aSpan = document.getElementsByTagName('span')[0];var i = 0;aInput[0].onkeyup = function() { this.value = this.value.replace(/[^d]/,'');} aInput[1].onclick = function() {(aInput[0].value == '') ?alert('請輸入數字!') :alert(/^d{2}$/.test(parseInt(aInput[0].value)) ? '√ 是兩位數' : '這是' + aInput[0].value.length + '位數');}};</script></head> <body> <input type='text' /><input type='button' value='是 否為兩位數' /> </body> </html>
1.this.value = this.value.replace(/1/,'')中的“”表示的是什么呢?
d ?問題解答
回答1:[^d]表示不為數字的字符,其中,d表示0-9`中的任一數字,[^...]表示對字符集取反
因此,this.value.replace(/[^d]/,'')表示,若字符串的第一個字符是數字,則保留;若不是數字,則刪掉
例如,2asd、3adf的第一個字符是數字,不會被替換掉;sadf、a123的第一個字符不是數字,會被替換為空字符串'',即把該字符刪掉
回答2:''就是空的意思.replace為替換;[^d]表示非數字(^表示非,不是的意思;d表示數字)
就是當你在輸入時(每敲一下鍵盤)會觸發鍵盤事件,如果輸入的不是數字([^d]表示非數字,所以通過[^d]來判斷是不是數字)就替換(.replace為替換的意思)為空(''),所以你輸入的不是數字的話話馬上被替換,不會顯示。
相關文章:
1. javascript - 如何使用loadash對[object,object,object]形式的數組進行比較2. 這種數據怎么合并啊?3. 請教各位大佬,瀏覽器點 提交實例為什么沒有反應4. javascript - 如何清除向可編輯的(contenteditable)元素里粘貼的文本的標簽和樣式?5. mysql優化 - 關于mysql分區6. 如何分別在Windows下用Winform項模板+C#,在MacOSX下用Cocos Application項目模板+Objective-C實現一個制作游戲的空的黑窗口?7. angular.js - 百度支持_escaped_fragment_嗎?8. javascript - ionic2 input autofocus 電腦成功,iOS手機鍵盤不彈出9. nlp - python如何對一篇文章自動分段?10. css3 - 這個形狀使用CSS怎么寫出來?
