我有一个输出的字符串
20153 Risk
我试图实现的是只得到字母,我通过使用正则表达式只得到数字来实现
const cf_regex_number = cf_input.replace(/D/g, '');
这将仅返回CCD_ 1。但一旦我尝试只获取字母,它就会返回while字符串,而不是Risk
。我已经做了研究,只得到字母的正则表达式是使用**/^[a-zA-Z]*$/**
这是我的代码行,我试图只得到字母
const cf_regex_character = cf_input.replace(/^[a-zA-Z]*$/,'')
但它不是返回Risk
,而是返回20153风险这是整行字符串。
/[^a-z]+/i
-
[
括号]
表示一系列字符;具体地说是a
到z
。 -
实际上,
20153
0标志意味着i
对大小写不敏感,因此也包括A
到Z
。 -
插入符号
^
反转模式;它的意思是,任何不在指定范围内的东西。 -
+
意味着只要字符在该范围内,就继续向匹配中添加字符。 -
然后停止匹配。
实际上,这将所有内容匹配到20153 Risk
中的空间。
然后用空字符串''
替换这个匹配,剩下的是Risk
。
const string = '20153 Risk';
const result = string.replace(/[^a-z]+/i, '');
console.log(result);
您的第一个模式是定位每个非数字,并将其替换为零。
另一方面,您的第二个模式只是定位一个模式的第一个出现,该模式是寻找字符串的start,后跟字母,后跟字符串的end。并没有这样的序列——如果你从字符串的开头开始,正好有零个字母,然后你离字符串的预期结尾很远。即使这样做有效,你删除的是字母,而不是非字母。
这个模式与你的第一个模式类似(删除任何出现的非字母(:
const cf_regex_character = cf_input.replace(/[^a-zA-Z]/g,'')
但可能更好的方法是提取所需的子字符串,而不是删除所有不是的子字符串:
const letters = cf_input.match(/[a-z]+/i)[0];
const numbers = cf_input.match(/d+/)[0];
(这是如果你知道有这样一个子串;如果你不确定,最好编码得更有防御力。(
cf_input="20153 Risk"
const cf_regex_character = cf_input.replace(/d+s/,'')
console.log(cf_regex_character)
str="20153 Risk"
reg=/[a-z]+/gi
res=str.match(reg)
console.log(res[0])