簡體   English   中英

正則表達式與字符集中的$不匹配

[英]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.

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