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

时间:2013-09-04 21:55:47

标签: javascript jquery

我有一个字符串" 5A"或" a6"。我想只得到" A"或" a"在结果上。我使用以下内容但它无法正常工作。

的Javascript

 var answer = '5A';
 answer = answer.replace(/^[0-9]+$/i);
 //console.log(answer) should be 'A';

6 个答案:

答案 0 :(得分:15)

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 )  

答案 1 :(得分:14)

 var answer = '5A';
 answer = answer.replace(/[0-9]/g, '');

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;
}

http://jsperf.com/strip-non-alpha

答案 2 :(得分:4)

你问的方式是,你想要找到这封信而不是删除号码(在这个例子中是相同的,但根据你的具体情况可能会有所不同) - 如果这就是你想要的,你可以选择不同的路径:

var answer = "5A";
var match = answer.match(/[a-zA-Z]/);
answer = match ? match[0] : null;

它会在字母上查找匹配项,而不是删除该数字。如果找到匹配项,则match[0]将代表第一个字母,否则match将为空。

答案 3 :(得分:3)

var answer = '5A';
answer = answer.replace(/[0-9]/g, '');

如果你关心表现,你也可以在没有正则表达式的情况下进行;)

你编码hade多个问题:

总的来说,我建议你先学习一下基本的正则表达式。这是一个有用的应用程序:http://rubular.com/

答案 4 :(得分:1)

您可以使用\d(数字)代替[0-9]来简化@ TrevorDixon和@ Aegis的答案

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

答案 5 :(得分:0)

的JavaScript: 它将从任何字符串中提取所有字母..

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

gcc
clang
/*var answer = '5A';
     answer = answer.replace(/[^a-zA-Z]/g, '');*/
$("#check").click(function(){
$("#extdata").html("Extraxted Alphabets : <i >"+$("#data").val().replace(/[^a-zA-Z]/g, '')+"</i>");
});