我有一个输出的字符串
20153 Risk
我想要实现的是只获取字母,我通过使用正则表达式只获取数字来实现const cf_regex_number = cf_input.replace(/\D/g, '');
这将仅返回 20153
.但是一旦我尝试只获取字母,它就会返回 while 字符串而不是 Risk
.我已经完成了我的研究,并且只获取字母的正则表达式正在使用 **/^[a-zA-Z]*$/**
这是我的代码行,我试图只获取字母const cf_regex_character = cf_input.replace(/^[a-zA-Z]*$/,'')
但不是返回 Risk
,它正在返回 20153风险这是 string 的整行。
最佳答案
您的第一个模式是定位每个非数字并用空替换它。
另一方面,您的第二个模式仅定位模式的第一次出现,并且该模式正在寻找字符串的开头,然后是字母,然后是字符串的结尾。没有这样的序列——如果你从字符串的开头开始,正好有零个字母,那么你离字符串的预期结尾很远。即使这样做有效,您也是在删除字母,而不是非字母。
此模式与您的第一个模式平行(删除任何出现的非字母):
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];
(这是如果您知道有这样一个子字符串;如果您不确定,最好进行更具防御性的编码。)
关于javascript - 带有 replace() 的正则表达式仅用于字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63165173/