2017-04-06 97 views
-1

我對regexp並不是很有經驗,並且一直在努力將我的所有使用案例與我所做的任何嘗試進行匹配,我想知道是否有人可能會建議可能涵蓋以下場景的匹配。我需要從弦中提取250ml的體積。Regexp援助

  • 香草開花250毫升沐浴
  • 香草開花250毫升沐浴
  • 香草花沐浴250毫升
  • 250毫升香草花沐浴
  • 香草開花20克皁
  • 香草花20克肥皂

謝謝

+0

那你試試這麼遠嗎? –

+0

'20g'和'20 g'怎麼樣? –

回答

1

let arr = ['Vanilla Blossom 250ml body wash', 
 
    'Vanilla Blossom 250 ml body wash', 
 
    'Vanilla Blossom body wash 250ml', 
 
    '250ml Vanilla Blossom body wash', 
 
    'Vanilla Blossom 20g soap', 
 
    'Vanilla Blossom 20 g soap', 
 
    'Vanilla Blossom 20 dag soap', 
 
    'Vanilla Blossom 20dag soap' 
 
]; 
 

 
let reg = /(?:\d+[ ]{0,1})(?:ml|g)/i; 
 

 
console.log(arr.map(str => str.match(reg)));

+0

有沒有辦法忽略文本,如果它不是說ml或g? – user1372212

+0

@ user1372212我編輯了我的答案,以便只捕獲ml和g – Oskar

1

這裏有一個方法來完成這項工作:

var test = [ 
 
    'Vanilla Blossom 250ml body wash', 
 
    'Vanilla Blossom 250 ml body wash', 
 
    'Vanilla Blossom body wash 250ml', 
 
    '250ml Vanilla Blossom body wash', 
 
    'Vanilla Blossom 20g soap', 
 
    'Vanilla Blossom 20 g soap', 
 
]; 
 
console.log(test.map(function (a) { 
 
    return a.match(/\d+\s*ml/) 
 
    }));