NET2.0 驗(yàn)證控件常用的正則表達(dá)式
[^0-9a-zA-Z]|^[^0-9]+$|^[^a-z]+$|^[^A-Z]+$ 驗(yàn)證密碼正則
只能輸入1個(gè)數(shù)字 只能輸入n個(gè)數(shù)字 只能輸入至少n個(gè)數(shù)字 只能輸入m到n個(gè)數(shù)字 只能輸入數(shù)字 只能輸入某個(gè)區(qū)間數(shù)字 只能輸入0和非0打頭的數(shù)字 只能輸入實(shí)數(shù) 只能輸入n位小數(shù)的正實(shí)數(shù) 只能輸入m-n位小數(shù)的正實(shí)數(shù) 只能輸入非0的正整數(shù) 只能輸入非0的負(fù)整數(shù) 只能輸入n個(gè)字符 只能輸入英文字符 只能輸入大寫英文字符 只能輸入小寫英文字符 只能輸入英文字符+數(shù)字 只能輸入英文字符/數(shù)字/下劃線 密碼舉例 驗(yàn)證首字母大寫 驗(yàn)證網(wǎng)址(帶?id=中文)VS.NET2005無此功能 驗(yàn)證漢字 驗(yàn)證QQ號(hào) 驗(yàn)證電子郵件(驗(yàn)證MSN號(hào)一樣) 驗(yàn)證身份證號(hào)(粗驗(yàn),最好服務(wù)器端調(diào)類庫(kù)再細(xì)驗(yàn)證) 驗(yàn)證手機(jī)號(hào)(包含159,不包含小靈通) 驗(yàn)證電話號(hào)碼號(hào)(很復(fù)雜,VS.NET2005給的是錯(cuò)的) 驗(yàn)證護(hù)照 驗(yàn)證IP,驗(yàn)證域驗(yàn)證信用卡(支持VISA卡,萬事達(dá)卡,Discover卡,美國(guó)運(yùn)通卡) 驗(yàn)證ISBN國(guó)際標(biāo)準(zhǔn)書號(hào) 驗(yàn)證GUID全球唯一標(biāo)識(shí)符 驗(yàn)證文件路徑和擴(kuò)展名 驗(yàn)證Html顏色值
正則表達(dá)式是.NET隱形的語(yǔ)法。關(guān)于其語(yǔ)法的文章很多,也可以參考MSDN。本文的目的是舉例,包括所有的正則表達(dá)式用法,會(huì)不斷補(bǔ)充,歡迎大家留言提供支持!
RegularExpressionValidator控件 使用RegularExpressionValidator控件,當(dāng)然也可以不用RegularExpressionValidator控件在后臺(tái)直接驗(yàn)證 ValidationExpression屬性自帶了幾個(gè)默認(rèn)驗(yàn)證方法,但是那遠(yuǎn)遠(yuǎn)不夠的。ErrorMessage屬性是報(bào)錯(cuò)信息。
如圖所示可以點(diǎn)擊“...”彈出的窗口選擇你要的正則表達(dá)式,或者直接自己寫。
在IE里輸入不是對(duì)應(yīng)格式的時(shí)候就會(huì)報(bào)錯(cuò):
驗(yàn)證數(shù)字: 只能輸入1個(gè)數(shù)字
表達(dá)式 ^\d$ 描述 匹配一個(gè)數(shù)字 匹配的例子 0,1,2,3 不匹配的例子
只能輸入n個(gè)數(shù)字
表達(dá)式 ^\d{n}$ 例如^\d{8}$ 描述 匹配8個(gè)數(shù)字 匹配的例子 12345678,22223334,12344321 不匹配的例子
只能輸入至少n個(gè)數(shù)字
表達(dá)式 ^\d{n,}$ 例如^\d{8,}$ 描述 匹配最少n個(gè)數(shù)字 匹配的例子 12345678,123456789,12344321 不匹配的例子
只能輸入m到n個(gè)數(shù)字
表達(dá)式 ^\d{m,n}$ 例如^\d{7,8}$ 描述 匹配m到n個(gè)數(shù)字 匹配的例子 12345678,1234567 不匹配的例子 123456,123456789
只能輸入數(shù)字
表達(dá)式 ^[0-9]*$ 描述 匹配任意個(gè)數(shù)字 匹配的例子 12345678,1234567 不匹配的例子 E,清清月兒,http://blog.csdn.net/21aspnet
只能輸入某個(gè)區(qū)間數(shù)字
表達(dá)式 ^[12-15]$ 描述 匹配某個(gè)區(qū)間的數(shù)字 匹配的例子 12,13,14,15 不匹配的例子
只能輸入0和非0打頭的數(shù)字
表達(dá)式 ^(0|[1-9][0-9]*)$ 描述 可以為0,第一個(gè)數(shù)字不能為0,數(shù)字中可以有0 匹配的例子 12,10,101,100 不匹配的例子 01,清清月兒,http://blog.csdn.net/21aspnet
只能輸入實(shí)數(shù)
表達(dá)式 ^[-+]?\d+(\.\d+)?$ 描述 匹配實(shí)數(shù) 匹配的例子 18,+3.14,-9.90 不匹配的例子 .6,33s,67-99
只能輸入n位小數(shù)的正實(shí)數(shù)
表達(dá)式 ^[0-9]+(.[0-9]{n})?$以^[0-9]+(.[0-9]{2})?$為例 描述 匹配n位小數(shù)的正實(shí)數(shù) 匹配的例子 2.22 不匹配的例子 2.222,-2.22,http://blog.csdn.net/21aspnet
只能輸入m-n位小數(shù)的正實(shí)數(shù)
表達(dá)式 ^[0-9]+(.[0-9]{m,n})?$以^[0-9]+(.[0-9]{1,2})?$為例 描述 匹配m到n位小數(shù)的正實(shí)數(shù) 匹配的例子 2.22,2.2 不匹配的例子 2.222,-2.2222,http://blog.csdn.net/21aspnet
只能輸入非0的正整數(shù)
表達(dá)式 ^\+?[1-9][0-9]*$ 描述 匹配非0的正整數(shù) 匹配的例子 2,23,234 不匹配的例子 0,-4,
只能輸入非0的負(fù)整數(shù)
表達(dá)式 ^\-[1-9][0-9]*$ 描述 匹配非0的負(fù)整數(shù) 匹配的例子 -2,-23,-234 不匹配的例子 0,4,
只能輸入n個(gè)字符
表達(dá)式 ^.{n}$ 以^.{4}$為例 描述 匹配n個(gè)字符,注意漢字只算1個(gè)字符 匹配的例子 1234,12we,123清,清清月兒 不匹配的例子 0,123,123www,http://blog.csdn.net/21aspnet/
只能輸入英文字符
表達(dá)式 ^.[A-Za-z]+$為例 描述 匹配英文字符,大小寫任意 匹配的例子 Asp,WWW, 不匹配的例子 0,123,123www,http://blog.csdn.net/21aspnet/
只能輸入大寫英文字符
表達(dá)式 ^.[A-Z]+$為例 描述 匹配英文大寫字符 匹配的例子 NET,WWW, 不匹配的例子 0,123,123www,
只能輸入小寫英文字符
表達(dá)式 ^.[a-z]+$為例 描述 匹配英文大寫字符 匹配的例子 asp,csdn 不匹配的例子 0,NET,WWW,
只能輸入英文字符+數(shù)字
表達(dá)式 ^.[A-Za-z0-9]+$為例 描述 匹配英文字符+數(shù)字 匹配的例子 1Asp,W1W1W, 不匹配的例子 0,123,123,www,http://blog.csdn.net/21aspnet/
只能輸入英文字符/數(shù)字/下劃線
表達(dá)式 ^\w+$為例 描述 匹配英文字符或數(shù)字或下劃線 匹配的例子 1Asp,WWW,12,1_w 不匹配的例子 3#,2-4,w#$,http://blog.csdn.net/21aspnet/
密碼舉例
表達(dá)式 ^.[a-zA-Z]\w{m,n}$ 描述 匹配英文字符開頭的m-n位字符且只能數(shù)字字母或下劃線 匹配的例子 不匹配的例子
驗(yàn)證首字母大寫
表達(dá)式 \b[^\Wa-z0-9_][^\WA-Z0-9_]*\b 描述 首字母只能大寫 匹配的例子 Asp,Net 不匹配的例子 http://blog.csdn.net/21aspnet/
驗(yàn)證網(wǎng)址(帶?id=中文)VS.NET2005無此功能
表達(dá)式 ^http:\/\/([\w-]+(\.[\w-]+)+(\/[\w- .\/\?%&=\u4e00-\u9fa5]*)?)?$
描述 驗(yàn)證帶?id=中文 匹配的例子 http://blog.csdn.net/21aspnet/, http://blog.csdn.net?id=清清月兒 不匹配的例子
驗(yàn)證漢字
表達(dá)式 ^[\u4e00-\u9fa5]{0,}$ 描述 只能漢字 匹配的例子 清清月兒 不匹配的例子 http://blog.csdn.net/21aspnet/
驗(yàn)證QQ號(hào)
表達(dá)式 [0-9]{5,9} 描述 5-9位的QQ號(hào) 匹配的例子 10000,123456 不匹配的例子 10000w,http://blog.csdn.net/21aspnet/
驗(yàn)證電子郵件(驗(yàn)證MSN號(hào)一樣) 表達(dá)式 \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 描述 注意MSN用非hotmail.com郵箱也可以 匹配的例子 aaa@msn.com 不匹配的例子 111@1. http://blog.csdn.net/21aspnet/
驗(yàn)證身份證號(hào)(粗驗(yàn),最好服務(wù)器端調(diào)類庫(kù)再細(xì)驗(yàn)證)
表達(dá)式 ^[1-9]([0-9]{16}|[0-9]{13})[xX0-9]$ 描述 匹配的例子 15或者18位的身份證號(hào),支持帶X的 不匹配的例子 http://blog.csdn.net/21aspnet/
驗(yàn)證手機(jī)號(hào)(包含159,不包含小靈通)
表達(dá)式 ^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8} 描述 包含159的手機(jī)號(hào)130-139 匹配的例子 139XXXXXXXX 不匹配的例子 140XXXXXXXX,http://blog.csdn.net/21aspnet/
驗(yàn)證電話號(hào)碼號(hào)(很復(fù)雜,VS.NET2005給的是錯(cuò)的)
表達(dá)式(不完美) 方案一 ((\(\d{3}\)|\d{3}-)|(\(\d{4}\)|\d{4}-))?(\d{8}|\d{7}) 方案二 (^[0-9]{3,4}\-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$) 支持手機(jī)號(hào)但也不完美 描述 上海:02112345678 3+8位 上海:021-12345678 上海:(021)-12345678 上海:(021)12345678 鄭州:03711234567 4+7位 杭州:057112345678 4+8位 還有帶上分機(jī)號(hào),國(guó)家碼的情況 由于情況非常復(fù)雜所以不建議前臺(tái)做100%驗(yàn)證,到目前為止似乎也沒有誰(shuí)能寫一個(gè)包含所有的類型,其實(shí)有很多情況本身就是矛盾的。 如果誰(shuí)有更好的驗(yàn)證電話的請(qǐng)留言
匹配的例子 不匹配的例子
驗(yàn)證護(hù)照
表達(dá)式 (P\d{7})|G\d{8})
描述 驗(yàn)證P+7個(gè)數(shù)字和G+8個(gè)數(shù)字 匹配的例子 不匹配的例子 清清月兒,http://blog.csdn.net/21aspnet/
驗(yàn)證IP
表達(dá)式 ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$
描述 驗(yàn)證IP 匹配的例子 192.168.0.1 222.234.1.4 不匹配的例子
驗(yàn)證域 表達(dá)式 ^[a-zA-Z0-9]+([a-zA-Z0-9\-\.]+)?\.(com|org|net|cn|com.cn|edu.cn|grv.cn|)$
描述 驗(yàn)證域 匹配的例子 csdn.net baidu.com it.com.cn 不匹配的例子 192.168.0.1
驗(yàn)證信用卡 表達(dá)式 ^((?:4\d{3})|(?:5[1-5]\d{2})|(?:6011)|(?:3[68]\d{2})|(?:30[012345]\d))[ -]?(\d{4})[ -]?(\d{4})[ -]?(\d{4}|3[4,7]\d{13})$
描述 驗(yàn)證VISA卡,萬事達(dá)卡,Discover卡,美國(guó)運(yùn)通卡 匹配的例子 不匹配的例子
驗(yàn)證ISBN國(guó)際標(biāo)準(zhǔn)書號(hào) 表達(dá)式 ^(\d[- ]*){9}[\dxX]$
描述 驗(yàn)證ISBN國(guó)際標(biāo)準(zhǔn)書號(hào) 匹配的例子 7-111-19947-2 不匹配的例子
驗(yàn)證GUID全球唯一標(biāo)識(shí)符 表達(dá)式 ^[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}$
描述 格式8-4-4-4-12 匹配的例子 2064d355-c0b9-41d8-9ef7-9d8b26524751 不匹配的例子
驗(yàn)證文件路徑和擴(kuò)展名 表達(dá)式 ^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$
描述 檢查路徑和文件擴(kuò)展名 匹配的例子 E:\mo.txt 不匹配的例子 E:\ , mo.doc, E:\mo.doc ,http://blog.csdn.net/21aspnet/
驗(yàn)證Html顏色值 表達(dá)式 ^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$
描述 檢查顏色取值 匹配的例子 #FF0000 不匹配的例子 http://blog.csdn.net/21aspnet/
|
|
偉武 2009-09-20 14:07:45
常用的JavaScript驗(yàn)證正則表達(dá)式2008/10/07 21:20匹配中文字符的正則表達(dá)式: [u4e00-u9fa5]
評(píng)注:匹配中文還真是個(gè)頭疼的事,有了這個(gè)表達(dá)式就好辦了
匹配雙字節(jié)字符(包括漢字在內(nèi)):[^x00-xff]
評(píng)注:可以用來計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2,ASCII字符計(jì)1)
匹配空白行的正則表達(dá)式:ns*r
評(píng)注:可以用來刪除空白行
匹配HTML標(biāo)記的正則表達(dá)式:< (S*?)[^>]*>.*?|< .*? />
評(píng)注:網(wǎng)上流傳的版本太糟糕,上面這個(gè)也僅僅能匹配部分,對(duì)于復(fù)雜的嵌套標(biāo)記依舊無能為力
匹配首尾空白字符的正則表達(dá)式:^s*|s*$
評(píng)注:可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁(yè)符等等),非常有用的表達(dá)式
匹配Email地址的正則表達(dá)式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
評(píng)注:表單驗(yàn)證時(shí)很實(shí)用
匹配網(wǎng)址URL的正則表達(dá)式:[a-zA-z]+://[^s]*
評(píng)注:網(wǎng)上流傳的版本功能很有限,上面這個(gè)基本可以滿足需求
匹配帳號(hào)是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
評(píng)注:表單驗(yàn)證時(shí)很實(shí)用
匹配國(guó)內(nèi)電話號(hào)碼:d{3}-d{8}|d{4}-d{7}
評(píng)注:匹配形式如 0511-4405222 或 021-87888822
匹配騰訊QQ號(hào):[1-9][0-9]{4,}
評(píng)注:騰訊QQ號(hào)從10000開始
匹配中國(guó)郵政編碼:[1-9]d{5}(?!d)
評(píng)注:中國(guó)郵政編碼為6位數(shù)字
匹配身份證:d{15}|d{18}
評(píng)注:中國(guó)的身份證為15位或18位
匹配ip地址:d+.d+.d+.d+
評(píng)注:提取ip地址時(shí)有用
匹配特定數(shù)字:
^[1-9]d*$ //匹配正整數(shù)
^-[1-9]d*$ //匹配負(fù)整數(shù)
^-?[1-9]d*$ //匹配整數(shù)
^[1-9]d*|0$ //匹配非負(fù)整數(shù)(正整數(shù) + 0)
^-[1-9]d*|0$ //匹配非正整數(shù)(負(fù)整數(shù) + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮點(diǎn)數(shù)
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配負(fù)浮點(diǎn)數(shù)
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮點(diǎn)數(shù)
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)
評(píng)注:處理大量數(shù)據(jù)時(shí)有用,具體應(yīng)用時(shí)注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26個(gè)英文字母組成的字符串
^[A-Z]+$ //匹配由26個(gè)英文字母的大寫組成的字符串
^[a-z]+$ //匹配由26個(gè)英文字母的小寫組成的字符串
^[A-Za-z0-9]+$ //匹配由數(shù)字和26個(gè)英文字母組成的字符串
^w+$ //匹配由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串
在使用RegularExpressionValidator驗(yàn)證控件時(shí)的驗(yàn)證功能及其驗(yàn)證表達(dá)式介紹如下:
只能輸入數(shù)字:“^[0-9]*$”
只能輸入n位的數(shù)字:“^d{n}$”
只能輸入至少n位數(shù)字:“^d{n,}$”
只能輸入m-n位的數(shù)字:“^d{m,n}$”
只能輸入零和非零開頭的數(shù)字:“^(0|[1-9][0-9]*)$”
只能輸入有兩位小數(shù)的正實(shí)數(shù):“^[0-9]+(.[0-9]{2})?$”
只能輸入有1-3位小數(shù)的正實(shí)數(shù):“^[0-9]+(.[0-9]{1,3})?$”
只能輸入非零的正整數(shù):“^+?[1-9][0-9]*$”
只能輸入非零的負(fù)整數(shù):“^-[1-9][0-9]*$”
只能輸入長(zhǎng)度為3的字符:“^.{3}$”
只能輸入由26個(gè)英文字母組成的字符串:“^[A-Za-z]+$”
只能輸入由26個(gè)大寫英文字母組成的字符串:“^[A-Z]+$”
只能輸入由26個(gè)小寫英文字母組成的字符串:“^[a-z]+$”
只能輸入由數(shù)字和26個(gè)英文字母組成的字符串:“^[A-Za-z0-9]+$”
只能輸入由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串:“^w+$”
驗(yàn)證用戶密碼:“^[a-zA-Z]w{5,17}$”正確格式為:以字母開頭,長(zhǎng)度在6-18之間,
只能包含字符、數(shù)字和下劃線。
驗(yàn)證是否含有^%&’,;=?$”等字符:“[^%&',;=?$x22]+”
只能輸入漢字:“^[u4e00-u9fa5],{0,}$”
驗(yàn)證Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
驗(yàn)證InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
驗(yàn)證電話號(hào)碼:“^((d{3,4})|d{3,4}-)?d{7,8}$”
正確格式為:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
驗(yàn)證身份證號(hào)(15位或18位數(shù)字):“^d{15}|d{}18$”
驗(yàn)證一年的12個(gè)月:“^(0?[1-9]|1[0-2])$”正確格式為:“01”-“09”和“1”“12”
驗(yàn)證一個(gè)月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
正確格式為:“01”“09”和“1”“31”。
匹配中文字符的正則表達(dá)式: [u4e00-u9fa5]
匹配雙字節(jié)字符(包括漢字在內(nèi)):[^x00-xff]
匹配空行的正則表達(dá)式:n[s| ]*r
匹配HTML標(biāo)記的正則表達(dá)式:/< (.*)>.*|< (.*) />/
匹配首尾空格的正則表達(dá)式:(^s*)|(s*$)
匹配Email地址的正則表達(dá)式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配網(wǎng)址URL的正則表達(dá)式:http://([w-]+.)+[w-]+(/[w- . %&=]*)?
(1)應(yīng)用:計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2,ASCII字符計(jì)1)
String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}
(2)應(yīng)用:javascript中沒有像vbscript那樣的trim函數(shù),我們就可以利用這個(gè)表達(dá)式來實(shí)現(xiàn)
String.prototype.trim = function()
{
return this.replace(/(^s*)|(s*$)/g, “”);
}
(3)應(yīng)用:利用正則表達(dá)式分解和轉(zhuǎn)換IP地址
function IP2V(ip) //IP地址轉(zhuǎn)換成對(duì)應(yīng)數(shù)值
{
re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正則表達(dá)式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error(”Not a valid IP address!”)
}
}
(4)應(yīng)用:從URL地址中提取文件名的javascript程序
s=”http://www.9499.net/page1.htm”;
s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ; //Page1.htm
(5)應(yīng)用:利用正則表達(dá)式限制網(wǎng)頁(yè)表單里的文本框輸入內(nèi)容
用正則表達(dá)式限制只能輸入中文:onkeyup=”value=”/blog alue.replace(/["^u4E00-u9FA5]/g,”) ” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^u4E00-u9FA5]/g,”))”
用正則表達(dá)式限制只能輸入全角字符: onkeyup=”value=”/blog alue.replace(/["^uFF00-uFFFF]/g,”) ” onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^uFF00-uFFFF]/g,”))”
用正則表達(dá)式限制只能輸入數(shù)字:onkeyup=”value=”/blog alue.replace(/["^d]/g,”) “onbeforepaste= “clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))”
用正則表達(dá)式限制只能輸入數(shù)字和英文:onkeyup=”value=”/blog alue.replace(/[W]/g,””) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”