12

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

Javascript

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

6 回答 6

26
var answer = '5A';
answer = answer.replace(/[^a-z]/gi, '');
// [^a-z] matches everything but a-z
// the flag `g` means it should match multiple 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 )  
于 2013-09-04T22:04:40.173 回答
21
 var answer = '5A';
 answer = answer.replace(/[^A-Za-z]/g, '');

g对于全局, no ^​​or $,并将''其替换为空。省略第二个参数会将其替换为字符串'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

于 2013-09-04T21:57:39.157 回答
4

你问的方式,你想找到字母而不是删除数字(在这个例子中是一样的,但根据你的情况可能会有所不同) - 如果这是你想要的,你可以选择不同的路径:

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

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

于 2013-09-04T22:05:48.650 回答
3
var answer = '5A';
answer = answer.replace(/[0-9]/g, '');

如果您关心性能,也可以不使用正则表达式;)

您编写了多个问题的代码:

一般来说,我建议你学习一些基本的正则表达式。这是一个与他们一起玩的有用应用程序:http ://rubular.com/

于 2013-09-04T21:58:05.157 回答
3

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

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

/*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>");
});
i{
color:green;
  letter-spacing:1px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<input type="text" id="data">
  <button id="check">Click To Extract</button><br/>
  <h5 id="extdata"></h5>
  
</div>

于 2016-09-03T19:07:55.597 回答
1

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

 var answer = '5A';
 answer = answer.replace(/\d/g, '');
于 2013-09-04T22:03:07.087 回答