李威 さぽている

          小說翻譯,日語相關(guān)轉(zhuǎn)移至http://blog.hjenglish.com/liwei

          正則表達(dá)式~~[8.9追加]

          第一次作業(yè)時,判斷數(shù)字那個方法就想到用正則了,可在MSDN里一看,Match只是在指定字符串里查找匹配表達(dá)式的部分,而我要的功能確是讓字符串符合表達(dá)式,當(dāng)時,感覺時間緊張,就此作罷~~

          今天看到 檢查用戶名,密碼,我又想起了正則。記憶中正則有這樣的功能的啊,為何我就沒找到相關(guān)方法呢?于是,今天又花時間看起了MSDN。功夫不負(fù)有心人,看到了^與$的功能,一頭一尾,不就可以當(dāng)完全匹配來用嗎?于是,寫了如下方法:

          public?static?bool?CheckPassword(string?password)
          ????????
          {
          ????????????
          return?Regex.IsMatch(password,?"^[0-9a-zA-Z]{6,16}$");
          ????????????
          ????????}


          public?static?bool?CheckName(string?name)
          ????????
          {
          ????????????
          return?Regex.IsMatch(name,?"^[a-zA-Z]{1,20}$");
          ????????}

          再想下那個CheckNumber,不也能很快解決嗎?
          有興趣的可以試著寫一下~~


          8.9追加
          昨天寫文時,有點晚了,所以COPY了已有的代碼,就完結(jié)了,并沒寫出CheckNumber,回家時,仔細(xì)考慮了下,感覺也得花點時間才寫的出來~~
          今天看了cypha的文,地址如下:
          http://www.aygfsteel.com/challenxing/archive/2006/08/09/62497.html
          看他的表達(dá)式那么短,于是測試了下,有些方面沒考慮到~~
          如:開頭多個0,結(jié)尾小數(shù)點等。
          于是改進(jìn)了下,附帶一提,vs2005下需要兩個“\”才不報錯~~
          (一篇文里不能用兩次代碼嗎?點了居然沒反應(yīng)-_-|||)
          public bool CheckNumber(String number)
          ??????? {
          ??????????? return Regex.IsMatch(number, "^[-|+]?([1-9][0-9]*\\.?[0-9]+|0\\.[0-9]+)|[0-9]$");
          ??????? }

          最后加了[0-9]是因為,前面一部分將一位數(shù)給忽略了~~
          如有更簡潔更好的表達(dá)式,望賜教~

          posted on 2006-08-08 20:57 李威 閱讀(361) 評論(3)  編輯  收藏

          評論

          # re: 正則表達(dá)式~~[8.9追加] 2006-08-09 15:26 茗香花神

          先感謝李威兄弟,讓我學(xué)到了新知識。

          public bool CheckNumber(String number)
          {
          return Regex.IsMatch(number, "^[-|+]?([1-9][0-9]*\\.?[0-9]+|0\\.[0-9]+)|[0-9]$");
          }
          這個類是有bug的 11-1 11a 這些都會返回正確。
          return Regex.IsMatch(number, "^[-|+]?(([1-9][0-9]*\\.?[0-9]+|0\\.[0-9]+)|[0-9])$");
          加個括號就行了 如果不想輸入2個\\在字符串前面+個"@",如下:
          @"^[-|+]?([1-9][0-9]*\.?[0-9]+|0\.[0-9]+)|[0-9]$"






            回復(fù)  更多評論   

          # re: 正則表達(dá)式~~[8.9追加] 2006-08-09 15:37 李威

          感謝提醒~~最后的“|[0-9]”應(yīng)該加到括號里~~馬虎要不得啊
          "^[-|+]?([1-9][0-9]*\\.?[0-9]+|0\\.[0-9]+|[0-9])$"

          這個@非常耐看呀~~  回復(fù)  更多評論   

          # re: 正則表達(dá)式~~[8.9追加] 2006-08-09 16:35 cypha

          呵呵,這幾點我也考慮到了,只是有些東西的定義不一樣,在原來的一些老的計算器中(像8位的小計算器)是可以出現(xiàn)1.或者.111,不過這個是我在很小時玩的,不知到現(xiàn)在還能不能用這種不規(guī)范的用法了。  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 龙泉市| 卓尼县| 河曲县| 酒泉市| 班戈县| 天峨县| 亚东县| 柏乡县| 高碑店市| 嵊泗县| 余江县| 哈尔滨市| 瓮安县| 天祝| 象州县| 孙吴县| 正宁县| 扶绥县| 昌邑市| 买车| 兴文县| 木兰县| 平远县| 无极县| 桐乡市| 灵山县| 天祝| 塔河县| 郁南县| 博野县| 万宁市| 罗平县| 临潭县| 洛川县| 木兰县| 芜湖县| 土默特左旗| 松潘县| 晴隆县| 南澳县| 余姚市|