我有一个字符串"5A"或"a6".我想在结果上只获得"A"或"a".我使用以下但它不起作用.
使用Javascript
var answer = '5A';
answer = answer.replace(/^[0-9]+$/i);
//console.log(answer) should be 'A';
Run Code Online (Sandbox Code Playgroud)
Tre*_*xon 17
var answer = '5A';
answer = answer.replace(/[0-9]/g, '');
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
http://jsperf.com/strip-non-alpha
and*_*lrc 16
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 )
Run Code Online (Sandbox Code Playgroud)
var answer = '5A';
answer = answer.replace(/[0-9]/g, '');
Run Code Online (Sandbox Code Playgroud)
如果您关心性能,您也可以不使用正则表达式来完成此操作;)
您的代码有多个问题:
string.replace需要两个参数:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replacei代表 的flagcase insensitive没有意义,因为您正在处理数字(什么是大写 1?!)/^[0-9]+$/只会匹配一个数字,仅此而已。您应该查看:http://www.regexper.com/。在框中输入您的正则表达式(不带斜线),然后按 Enter 键!一般来说,我建议您学习一些基本的正则表达式。这是一个有用的应用程序可以与它们一起玩: http: //rubular.com/
| 归档时间: |
|
| 查看次数: |
19157 次 |
| 最近记录: |