javascript下正则表达式匹配百分比/百分号%

javascript下正则表达式匹配百分比/百分号

var re = /^-?\d+%$/;
console.log(re.test('50%'));//true
console.log(re.test('-25%'));//true
console.log(re.test('3a5%'));//false

正则分析

  • ^ 匹配一个输入或一行的开头,/^a/匹配”an A”,而不匹配”An a”
  • ? 匹配前面元字符0次或1次,/ba*/将匹配b,ba
  • \d 匹配一个字数字符,/\d/ = /[0-9]/
  • + 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa
  • % 这个百分号就是匹配百分号的意思
  • $ 匹配一个输入或一行的结尾,/a$/匹配”An a”,而不匹配”an A”

就是匹配一个可能存在符号的,最后一个字符是%,%前面是数字的正则;

当然,这么写是不严禁的,还有可能存在小数的情况下,比如35.02%;

如果您用这么写的话,匹配就是false了;

console.log(re.test('35.02%'));//false

需要改一下,让它兼容小数点的百分比;

可以改下面这种的

var re = /^-?(\d+\.?\d+?)%$/;
var re = /^-?(\d+\.?\d+?)%$/;
console.log(re.test('50%'));//true
console.log(re.test('-25%'));//true
console.log(re.test('3a5%'));//false
console.log(re.test('35.02%'));//true

在输出结果,哈哈,这就可以了;

如果您需要再次保证,小数最大两位,那么嗨需要改的;否则有问题的;比如

var re = /^-?(\d+\.?\d+?)%$/;
console.log(re.test('35.02%'));//true
console.log(re.test('35.0%'));//true
console.log(re.test('35.012312312312%'));//true
console.log(re.test('35.0%'));//true

看到上面的输出没有,全部是true;

那么需要对其进行再次修改了;

提供一个重要的元字符,自己去适配吧

  • {n} 精确匹配n次
  • {n,} 匹配n次以上
  • {n,m} 匹配n-m次

自己试试吧这些元字符用上去做限制吧;正则有您更精彩;

~~

未经允许不得转载:WEB前端开发 » javascript下正则表达式匹配百分比/百分号%

赞 (5)