李威 さぽている

          小說翻譯,日語相關轉移至http://blog.hjenglish.com/liwei

          正則表達式~~[8.9追加]

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

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

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

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

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

          評論

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

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

          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]$"






            回復  更多評論   

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

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

          這個@非常耐看呀~~  回復  更多評論   

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 达日县| 宜昌市| 衡东县| 神木县| 遂川县| 孝义市| 清丰县| 江陵县| 泰顺县| 巨鹿县| 遵义市| 沛县| 云林县| 甘谷县| 广水市| 木兰县| 靖州| 临朐县| 收藏| 宜章县| 游戏| 无锡市| 沐川县| 麦盖提县| 临清市| 南部县| 普兰县| 湾仔区| 林口县| 卢氏县| 凤阳县| 五河县| 朔州市| 磴口县| 英超| 肥乡县| 秦安县| 荔浦县| 双鸭山市| 太谷县| 洛南县|