Javascript 如何仅从字母数字字符串中提取字母

Javascript 如何仅从字母数字字符串中提取字母,javascript,jquery,Javascript,Jquery,我有一个字符串“5A”或“a6”。我只想得到结果的“A”或“A”。我正在使用以下工具,但它不起作用 Javascript var answer = '5A'; answer = answer.replace(/^[0-9]+$/i); //console.log(answer) should be 'A'; g用于全局,不使用^或$,并使用'将其替换为零。不使用第二个参数将其替换为字符串'undefined' 我想知道这样的东西是否会更快,但它和变体的速度要慢得多: function a

我有一个字符串“5A”或“a6”。我只想得到结果的“A”或“A”。我正在使用以下工具,但它不起作用

Javascript

 var answer = '5A';
 answer = answer.replace(/^[0-9]+$/i);
 //console.log(answer) should be 'A';
g
用于全局,不使用
^
$
,并使用
'
将其替换为零。不使用第二个参数将其替换为字符串
'undefined'

我想知道这样的东西是否会更快,但它和变体的速度要慢得多:

function alphaOnly(a) {
    var b = '';
    for (var i = 0; i < a.length; i++) {
        if (a[i] >= 'A' && a[i] <= 'z') b += a[i];
    }
    return b;
}
仅限字母功能(a){
var b='';
对于(变量i=0;i='a'&&a[i]
如果您关心性能,也可以不使用正则表达式来实现;)

您可以编写多个问题的代码:

  • string.replace
    采用两个参数:
  • 标志
    i
    ,代表
    不区分大小写
    ,因为您处理的是数字(大写1是什么?!)
  • /^[0-9]+$/
    将只匹配一个数字,仅此而已。您应该检查此项:。在框中输入您的正则表达式(不带斜杠),然后按Enter键

一般来说,我建议您学习一些基本正则表达式。这里有一个有用的应用程序可以使用它们:

您可以使用
\d
(数字)而不是
[0-9]
简化一些@TrevorDixon和@Aegis的答案

 var answer = '5A';
 answer = answer.replace(/\d/g, '');

按照您的提问方式,您希望找到字母而不是删除数字(本例中的情况相同,但根据您的情况可能有所不同)-如果这是您想要的,您可以选择不同的路径:

var answer = "5A";
var match = answer.match(/[a-zA-Z]/);
answer = match ? match[0] : null;
它在字母上查找匹配项,而不是删除数字。如果找到匹配项,则
match[0]
将表示第一个字母,否则
match
将为空。

var answer = '5A'; answer = answer.replace(/[^a-zA-Z]/g, '');

单击以提取

这里添加的是
g
标志,它代表globalPlease链接,而不是@Oriol I love MDN,不用担心,我只是选择了我找到的第一个链接,参数的描述是正确的;这是我需要做的一切show@Aegis,每个链接都有助于他们在谷歌中保持领先地位。@Oriol,讽刺的是,你链接到了邪恶的网站!@TrevorDixon哈哈,它是有意帮助人们比较这两个文档,发现MDN更完整。没有必要发布另一个答案,这不会给现有的答案带来任何新的东西。这非常优雅。有趣的是,有时最好的答案几乎是最新的。这是唯一一个总是都是*c的答案确实,用户要求在特定的字符串中只找到数字(s)和空格或其他字母,但还可以在“B f,7945 A”上运行,得到“B f,A”,而不是更希望的“BFA”。因此,我认为这个答案更为迅速,从不欺骗。
var answer = '5A';
answer = answer.replace(/[^a-z]/gi, '');
// [^a-z] matches everything but a-z
// the flag `g` means it should match multiply occasions
// the flag `i` is in case sensitive which means that `A` and `a` is treated as the same character ( and `B,b`, `C,c` etc )  
var answer = "5A";
var match = answer.match(/[a-zA-Z]/);
answer = match ? match[0] : null;
var answer = '5A'; answer = answer.replace(/[^a-zA-Z]/g, '');