簡體   English   中英

使用正則表達式解析javascript中的字符串

[英]Parse string in javascript using regular expressions

我的頁面上有html片段,它看起來像這樣:

...
    <address>
       6231 Leesburg Pike Ste 100A<br>
       Falls Church, VA 22041-2102
    </address>
...

我如何使用jQuery解析此字符串以獲取以下數據:

1. Address: 6231 Leesburg Pike Ste 100A
2. City: Falls Church
3. State: VA
4. ZIP: 22041

謝謝!

正則表達式:

(.*)\n(.*?),\s([A-Z]{2})\s(\d{5})

Javascript:

 var str = $("address").text() var extract = str.match(/(.*)\\n(.*?),\\s([AZ]{2})\\s(\\d{5})/); var address = extract[1]; var city = extract[2]; var state = extract[3]; var zip = extract[4]; console.log(address) // 6231 Leesburg Pike Ste 100A console.log(city) // Falls Church console.log(state) // VA console.log(zip) // 22041 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <address> 6231 Leesburg Pike Ste 100A<br> Falls Church, VA 22041-2102 </address> 

傑斯菲德爾

最實用,假設狀態/郵政編碼中沒有其他逗號-比oneliner regexp更易於閱讀和維護

jQuery僅用於獲取和設置HTML-可以完全使用innerHTML完全不需要jQuery

 $(function() { var addr = $("address").html(), parts1 = addr.replace(/\\s+/g, " ").split(/<br>/i), parts2 = parts1[1].split(","), parts3 = parts2[1].trim().split(" "), address = parts1[0].trim(), city = parts2[0].trim(), state = parts3[0].trim(), zip = parts3[1].trim(); // spirit on - if you need first part only $("ol").after("<ol><li>Address: "+address+ "</li><li>City: "+city+ "</li><li>State: "+state+ "</li><li>Zip: "+zip+"</li>"); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <address> 6231 Leesburg Pike Ste 100A<br> Falls Church, VA 22041-2102 </address> <ol> <li>Address: 6231 Leesburg Pike Ste 100A</li> <li>City: Falls Church</li> <li>State: VA</li> <li>ZIP: 22041-2102</li> </ol> 

  console.log(`<address> 6231 Leesburg Pike Ste 100A<br> Falls Church, VA 22041-2102 </address>`.match(/(\\d+.*)<br>\\n\\t?(.*), (\\w+) ([\\d-]+)/)) 

無需jQuery

<address>[^\d]*(\d{1,4}[^<,]*)(?:<br\/?>|,)\s*([^,]*),\s*([A-Z]{2})\s*(\d{3,5})[^<]*<\/address>

分解

<address> = start anchor
[^\d]* = eat all non digits
(\d{1,4}[^<,]*) Capture address
(?:<br\/?>|,)\s* eat to a <br> or comma
([^,]*) = Capture city
([A-Z]{2}) = capture state code
(\d{3,5}) = capture zip
[^<]* = eat rest too anchor
<\/address> = end anchor

 var str = "<address>\\ 6231 Leesburg Pike Ste 100A<br>\\ Falls Church, VA 22041-2102\\ </address>"; console.log(str.match(/<address>[^\\d]*(\\d{1,4}[^<,]*)(?:<br\\/?>|,)\\s*([^,]*),\\s*([AZ]{2})\\s*(\\d{3,5})[^<]*<\\/address>/)) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM