Regex在javascript和java中如何使用

來源:互聯網
上載者:User

Regex只要有兩個功能: 模式的檢驗與替換

 在開始之前先簡單介紹一下Regex的基礎,以下為我做的摘錄:

 表示匹配元素的符號

'.' 符號匹配所有字元,包括空格、Tab字元甚至分行符號。

'[]' 方括弧裡面指定參與匹配的字元. eg. Regex“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。

'(|)' “|”操作符的基本意義就是“或”運算. eg.要匹配“toon”,使用“t(a|e|i|o|oo)n”。這裡不能使用[],因為[]只允許匹配單個字元。

'^' 否定的標誌 ,如 [^x][a-z]+,表示的首字元不可以為x

'\s':空格標誌  eg. "June 12, 1991 ",則運算式為:[a-z]+\s+[0-9]{1,2},\s*[0-9]{4},如果需要提取其中的月份則需要加上圓括弧進行分組,([a-z]+)\s+[0-9]{1,2},\s*[0-9]{4},這已經涉及到了字串的替換了。

 表示匹配次數的符號

 '*':o次或多次 '+':1次或多次  '?':0次或1次  '{n}':匹配n次  '{n,m}':匹配n-m次

如 999-88789-9800  則Regex為 :[0-9]{3}\-[0-9]{5}\-[0-9]{4},如果999887899800也算正確的話可以改為:[0-9]{3}\-?[0-9]{5}\-?[0-9]{4}

 一些快捷的符號

\d:[0-9] \D:[^0-9]  \w:[A-Z0-9]  \W[^A-Z0-9] \s:[\t\n\r\f]  \S:[^\t\n\r\f] 

因此我們可以將 [0-9]{3}\-[0-9]{5}\-[0-9]{4} 修改為:\d{3}\-\d{5}\-\d{4}

 

 下面我們將使用一些簡單的例子來介紹,需要注意的是在java 和 javascript 使用Regex有一點點不同的地方,我這裡只介紹使用的方法,不具體介紹各種用法(具體參看Javascript中:http://www.iteye.com/topic/481228  ,java中 :http://blog.csdn.net/b10090120/article/details/7784410

 我們針對字串:<peter> <lionel>\"www.163.com\"<kenny><>1234 5678  進行操作

Javascript中

<html>

<head>

<title>reg</title>

<script type="text/javascript">

 var str="<peter>dsadasdas<lionel>\"www.163.com\"<kenny><>";

var reg=/(<[^>]*>)/g;    //g (全文尋找) i (忽略大小寫)m (多行尋找)

 //查詢到所有合格子字串

var cc = str.match(reg);

alert(cc[2]);

 //將reg為標準分割數組

arr = str.split(reg);  

alert(arr[1]);

 //replace,替換與Regex匹配的子串,其中分組字串放在$1~$9中

alert( str.replace(reg,'替代它')); 

alert(str.replace(reg,"<imgsrc='$1'></img>"));

var ree = /(\d)\s(\d)/;

alert( str.replace(ree,"$2,$1"));//在這個裡面$1表示第一個分組1234,$2則表示5678 

 //在字串中尋找時我們常用indexOf,與之對應用於正則尋找的方法是search 

alert(str.search(reg));//返回尋找到的字串開始下標0</script>

 </head>

<body>

   Reg測試

</body>

</html>

 

 注附帶:

 var re=/@(\S+)+(\s)?/g;      //篩選出 @xx  ,並進行替換

 str=str.replace(re,'<a class="marked-name" href="<person>" rel="weiboAtem-username" name="$1" >@$1</a>');

//拼湊的Regex

var userFacesCn ="微笑" ;

var userFaces ="pic_1.gif";

var reg= new RegExp("\\["+userFacesCn+"\\]",'g');

weiboContent = weiboContent.replace(reg,"["+userFaces+"]");

var osVersion = "Ubuntu 8";其中的8表示系統主要版本號  
  exec返回的數組第1到n元素中包含的是匹配中出現的任意一個子匹配
re=/^[a-z]+\s+(\d+)$/i;用()來建立子匹配
arr =re.exec(osVersion);
alert(arr[0]);整個osVersion,也就是Regex的完整匹配
alert(arr[1]);8,第一個子匹配,事實也可以這樣取出主要版本號
alert(arr.length);2
osVersion = "Ubuntu 8.10";取出主要版本號和次版本號碼
re = /^[a-z]+\s+(\d+)\.(\d+)/i;.是Regex元字元之一,若要用它的字面意義須轉義
arr = re.exec(osVersion);
alert(arr[0]);完整的osVersion
alert(arr[1]);8
alert(arr[2]);10

 

 

Java中

String s = "<peter>dddd<lionel>\"www.163.com\"<kenny><>";

    Pattern p =
Pattern.compile("(<[^>]*>)");

    Matcherm = p.matcher(s);

    List<String>result=newArrayList<String>();

    while(m.find()){

        result.add(m.group());

    }

    for(String s1:result){

        System.out.print(s1+’,’);

    }

輸出結果為:<peter>,<lionel>,<kenny>,

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.