我想使用Regex来确定第一个字符之后的字符是否都是数字。
例如:
我本质上是想忽略第一个字符
我到目前为止:
(?<=A)\w*(?=)
但这使A12B或A1B2C有效,我只想要A后面的数字。
答案 0 :(得分:2)
您的尝试非常复杂,尤其是考虑到您的目标多么简单。 成功使用正则表达式只是为了简单。
第一个字符可以是任何字符,因此只需使用.
。
下一个全为数字,因此您需要\d
。
您可以为它加注星标以指定无限制的重复,如果需要至少一个,请使用+
。
最后,您需要在开头和结尾处锚定正则表达式,否则它将与A123XXXXX
或XXXXA123
之类的东西匹配。
请注意,match
的大多数实现都将在末尾锚定模式,因此您可以在开始时省略插入符号。
最终正则表达式:
^.\d*$
答案 1 :(得分:2)
您不能匹配数字\D
,然后匹配数字1+倍。如果这是整个字符串,则可以使用锚点来声明字符串的开始^
和$
结束。
^\D\d+$
这将匹配:
^
字符串的开头\D
不匹配数字\d+
匹配1个以上的数字,确保有数字$
字符串的结尾答案 2 :(得分:2)
我能想到的最佳解决方案是:
^.\d*$
^
-行首.
-任何字符(行终止符除外)\d*
\d
-一个数字*
-重复任意次(包括0次。如果希望至少为1,则将其更改为+
)。$
-行尾
let regex = /^.\d*$/;
let testStrings = ['A123', 'A12B'];
testStrings.forEach(str => {
console.log(`${str} is ${regex.test(str) ? 'valid' : 'invalid'}`);
});
答案 3 :(得分:0)
^ [a-zA-Z] [0-9] {3} $
^
-“开头为”(此处以任何字母开头)。读取为^[a-zA-Z]
[a-z]
-任何小写字母和A-Z
任何大写字母(如果需要,您可以更改。)[0-9]
-任何数字{3}
-描述您要检查的号码。您必须将其读为[0-9]{3}
$
-语句结束。 (意味着,在这种情况下,它将以3个数字结尾)您可以在这里玩-https://regex101.com/r/mqUHvP/5
答案 4 :(得分:0)
也许
(?<=.{1,1})([0-9]+)(?=\s)
(?<=。{1,1})-之前只有一个字符
([[0-9] +)-至少一位数字
(?= \ s)-后面有一个空格
在开头添加^
-指定行的开头
将(?=\s)
替换为$
,直到行尾