[英]Regex does not match $ in character set
我目前正在解決一個奇怪的javascript正則表達式問題。 我正在嘗試匹配/
或輸入結尾之間的所有字符。 例如這個字符串
admin/item/get
應該匹配為:
[ 'admin', 'item', 'get' ]
我並不在乎/
是否是比賽的一部分,所以這個結果也適用於我:
[ 'admin/', 'item/', 'get' ]
為了匹配輸入字符串s
我使用正則表達式
s.match(/.+?[\/$]/g)
導致
[ 'admin/', 'item/' ]
據我了解,此字符集中輸入$
的末尾不匹配。
當我嘗試使用正則表達式s.match(/.+?$/g)
僅匹配輸入結尾時,我得到了預期的結果[ 'admin/item/get' ]
。 但是將$
放在字符集s.match(/.+?$/g)
,match調用返回null
。
任何幫助表示贊賞...
順便說一句:我正在使用node.js 0.8.20
因為$
放在字符集中時會被視為字符。 不過,應該這樣做,因為它在非內存捕獲組中使用了交替方式,因此將$
的含義恢復為主題的結尾:
s.match(/.+?(?:\/|$)/g)
["admin/", "bla/", "bla"]
如評論中所述:
s.split('/')
["admin", "bla", "bla"]
字符類[]
$
沒有特殊含義,被視為文字字符
它應該是
.*?(?=\/|$)
您可以改為執行此操作。您不必檢查/
或$
[^/]*
您可以使用正則表達式或字符串對象的split方法獲得結果。
var s = "admin/item/get";
使用字符串對象的拆分方法。
用"/"
分割字符串。
s.split("/");
["admin", "item", "get"]
使用正則表達式模式。
用正則表達式/[^\\/]+/g
匹配字符串,該表達式匹配所有出現一次或多次( "/"
字符除外)的字符。
s.match(/[^\/]+/g)
["admin", "item", "get"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.