正则表达式验证字符串格式<整数> @ <整数>

时间:2018-05-01 03:14:42

标签: javascript typescript

我需要以

格式为字符串创建正则表达式
<whole-number>@<whole-numbers>%
for example:
1@100%,
9@50%,
5@10%,
  • 在@
  • 之前,只允许使用单个数字
  • 仅数字数字后面的@特殊字符
  • @
  • 后面只有3个或更少的数字
  • 字符串末尾只允许使用%特殊字符。

以下示例无效。

0@100%,
a@50%,
1@abc%,

我创建了一个正则表达式,但它没有按预期工作

([0-9]{1}[@]{1}[0-9]{0,3})

2 个答案:

答案 0 :(得分:3)

这应该这样做:

/^\d@\d+%$/

\d代表数字。 +表示一个或多个字符

你编写正则表达式的方式,似乎你只需要在@之后需要3个数字,如果你想要那么你编写它的方式,它应该是这样的:

/^[0-9]{1}@[0-9]{0,3}%$/

您错过了%字符匹配和锚标记。

否则你可以使用:

/^\d@\d{0,3}%$/

答案 1 :(得分:2)

您希望字符串以1到9(不是0)的一位数字开头,然后是@,然后是最多3位且以%结尾的数字。

然后使用:

/^[1-9]@\d{1,3}%$/

console.log('4@55%',/^[1-9]@\d{1,3}%$/.test('4@55%'))
console.log('2@678%',/^[1-9]@\d{1,3}%$/.test('2@678%'))
console.log('22@22%',/^[1-9]@\d{1,3}%$/.test('22@22%'))
console.log('a@11%',/^[1-9]@\d{1,3}%$/.test('a@11%'))
console.log('0@99%',/^[1-9]@\d{1,3}%$/.test('0@99%'))
console.log('3@%',/^[1-9]@\d{1,3}%$/.test('3@%'))
console.log('1@abc%',/^[1-9]@\d{1,3}%$/.test('1@abc%'))