2017-02-13 128 views
-2

我想嚴格匹配45%2%這樣的字符串。嚴格匹配百分比值的正則表達式

如果在abc34%34%cd212等所需字符串之前或之後添加了其他字符串,則該字符串不應匹配。

+0

@anubhava的 $端:只有當它是可以接受匹配字符串「foo-24%」中的'24%'。 –

+0

'0.000039000%'呢? – sln

+0

@sin浮點數應該允許 – mkuniyil

回答

1

這會爲你工作:

const testData = (data) => /^(?:[1-9]\d?%|0%)$/.test(data) 
 

 
const test = ["1.2%","120%","12%","2%", "ABc%", "1,3%", "23", "abc34%", "34%cd212", "00%", "0%"] 
 

 
for(let x of test){ 
 
    console.log(`${x} ${testData(x)}`) 
 
}

^串的begining
[1-9]數目從1至9
\d?可選1號
%%符號蜇
|0%或0%

+0

謝謝!這對我有用 – mkuniyil

+0

@mkuniyil 00%還好嗎? - 可以修復 –

+0

@MaciejKocieja應該避免「00%」 – mkuniyil

1

您可以使用以下正則表達式:

字符串的
^\d+%$ 
  • ^開始。這可以確保字符串ABC45%不被允許。
  • \d+至少一個數字
  • $字符串結尾。這可以確保,該字符串45%ABC不允許

這是一個活生生的例子:

var regex = /^\d+%$/; 
 
var samples = [ 
 
    "123%", 
 
    "ABC12%", 
 
    "ABC123%ABC", 
 
    "123%abc", 
 
    "abc" 
 
]; 
 

 
for(var i=0; i<samples.length; i++) { 
 
    var sample = samples[i]; 
 
    console.log(sample, !!sample.match(regex)); 
 
}

+0

這工作,謝謝 – mkuniyil