首先,正規表示式的"非",代表不想匹配某個字元。
比如字串helloword123,/[^0-9]+/g可以匹配非數字,即匹配結果為helloword;
同樣的,/[^he]+/g可以匹配非h非e的字元,匹配結果為lloword123;
那麼/[^hello]/g呢?乍一看可能會以為能匹配word123,其實不然,[^] 內的多個字元是"或"的關係存在的,即它們並不是乙個整體,/[^hello]/g 表示 非h非e非l非o,並不能理解為 非(hello),所以匹配結果是 w 和 rd123。
道理我們都懂,可我們就是想匹配非某個字串呢?比如某一字串若是含有hello則無匹配,若是不含hello則匹配,寫成[^hello]是顯然不行的,[^(hello)] 呢?其實不起作用。
這時我們需要用到正規表示式的斷言——(?!pattern) 零寬負向先行斷言或者(?這裡只介紹一種寫法,大家可以都去嘗試一下。
/^((?!hello).)+$/
由於斷言 (?!hello)是不佔位的,後跟的 . 在原位置匹配任意字元,再用括號將其括起來,用+重複一次或多次,前後加上^和$,若是字串中存在hello,則匹配到h字元之前的時候,斷言(?!hello)匹配失敗,正則匹配結果為false, 若是字串中不存在hello,則匹配結果是整個字串。
1. 匹配&和;之間不含有test的字元
str = "hello &test1;test&qout;";
正規表示式:/&((?!test).)+;/g
匹配結果:和 &qout;
2.匹配不含有標籤的
標籤str = "
";正規表示式: /]*>((?!]*>).)+
/g
匹配結果:
正規表示式 非貪婪匹配
先來看個例子 final static string text 999www.chinoukin.com 888 final static string regex public static void main string args 預想輸出結果 999 b 888 b 實際輸出結果 999 b...
正規表示式匹配字串
正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。匹配中文字元的正規表示式 u4e00 u9fa5 評注 匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元 包括漢字在內 x00 xff 評注 可以用來計算字串的長度 乙個雙位元組字元長度計...
正規表示式匹配 字串
正規表示式匹配字串 假使,有幾個需要驗證的字串用 連線在一起 形如 farmer1,1farmer234 想用正規表示式來匹配每乙個字串。private static string sourcestr farmer1,1farmer234 private static string key farm...