鍍金池/ 問答/Java  HTML/ 正則表達(dá)式匹配字符串`\$`而不匹配單獨(dú)的字符`$`,怎么寫呢?

正則表達(dá)式匹配字符串`\$`而不匹配單獨(dú)的字符`$`,怎么寫呢?

取兩個(gè)$之間的字符串,兩個(gè)$之間可以包含任意字符串包括 \$,但是不包含單獨(dú)的 $ 字符

var str1 = 'eee$aaa$bbb$rrr'
// 取兩個(gè) $ 之間的字符串
// 希望通過正則得到 `aaa`

var str2 = 'eee$aaa\$bbb$rrr'
// 取兩個(gè) $ 之間的字符串
// 希望通過正則得到 `aaa\$bbb`

怎么匹配 \$ 但是不匹配單獨(dú)的 $ 呢?

回答
編輯回答
囍槑

clipboard.png

\$(\w|\\\$)*?\$
2017年7月8日 14:06
編輯回答
青裙

不知道這個(gè)能否滿足要求, /([a-z]*(\\\$)+[a-z]*)+|[a-z]+/g

2017年7月3日 11:58
編輯回答
離魂曲

假設(shè) 題主 str2 給錯(cuò)了,那么答案如下:

const reg=/\$([\s\S]*?[^\\])\$/;
let str1 = 'eee$aaa$bbb$rrr';
let str2 = 'eee$aaa\\$bbb$rrr';//假設(shè)題主給錯(cuò)了
let str3 = 'eee$aaa\$bbb$rrr';//假設(shè)題主沒給錯(cuò)
console.log(str1.match(reg)[1],str2.match(reg)[1],str3.match(reg)[1]);//aaa,aaa\$bbb,aaa

如果題主答案沒給錯(cuò),str3 和 str1 是一致的,因?yàn)?\ 會(huì)被自動(dòng)轉(zhuǎn)譯掉,就是說:

console.log(str1 ===str3)//true;

但是無論如何,上面的正則都是可以的;

2017年1月21日 12:45
編輯回答
傻丟丟
const reg  = /\/\$/g
reg.test('eee$') // fasle
reg.test('aaa/$') // true
2017年9月25日 22:01