我有一个字符串" 5A"或" a6"。我想只得到" A"或" a"在结果上。我使用以下内容但它无法正常工作。
的Javascript
var answer = '5A';
answer = answer.replace(/^[0-9]+$/i);
//console.log(answer) should be 'A';
答案 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;
}
答案 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多个问题:
string.replace
有两个参数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace i
的国旗case insensitive
没有意义,因为你正在处理数字(什么是大写1?!)/^[0-9]+$/
只会匹配一个数字,仅此而已。你应该看看这个:http://www.regexper.com/。在框中输入正则表达式(不带斜杠),然后按Enter键!总的来说,我建议你先学习一下基本的正则表达式。这是一个有用的应用程序: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>");
});