javascript正则表达式仅返回字母
我的字符串可以是A01、B02、C03,将来也可能是AA18。我想我可以用一个正则表达式来获取字母,然后在我的正则表达式上工作,因为我对它做得不多。我写了这个函数:javascript正则表达式仅返回字母,javascript,regex,Javascript,Regex,我的字符串可以是A01、B02、C03,将来也可能是AA18。我想我可以用一个正则表达式来获取字母,然后在我的正则表达式上工作,因为我对它做得不多。我写了这个函数: function rowOffset(sequence) { console.log(sequence); var matches = /^[a-zA-Z]+$/.exec(sequence); console.log(matches);
function rowOffset(sequence) {
console.log(sequence);
var matches = /^[a-zA-Z]+$/.exec(sequence);
console.log(matches);
var letter = matches[0].toUpperCase();
return letter;
}
var x = "A01";
console.log(rowOffset(x));
我的
匹配项
继续为空。我这样做对吗?看着这篇文章,我认为正则表达式是正确的:你对另一个问题的目的感到困惑:他想检查他的字符串中是否只有字母
您需要删除分别匹配字符串开头和结尾的锚点^$
:
[a-zA-Z]+
这将匹配输入字符串中的第一个字母
如果可能有更多匹配项(即您希望单个字符串中有多个匹配项),请使用
您可以使用String#replace
从输入字符串中删除所有非字母:
var r = 'AA18'.replace(/[^a-zA-Z]+/g, '');
//=> "AA"
您的主要问题是在正则表达式模式中使用
^
和$
字符^
表示字符串的开头,$
表示字符串的结尾,因此您的模式正在查找一个字符串,该字符串从字符串的开头到结尾仅为一组一个或多个字母
此外,如果您想获得字母的每个单独实例,您需要在正则表达式模式的末尾包含“全局”指示符(g
):/[a-zA-Z]+//g
。忽略这一点意味着它只会找到模式的第一个实例,然后停止搜索。添加它将匹配所有实例
这两个更新应该会让你继续前进
编辑: 此外,您可能希望使用
match()
而不是exec()
。如果您有一个包含多个值的字符串(例如,“A01、B02、C03、AA18”
),则match()
将在一个数组中返回所有值,而exec()
将只匹配第一个值。如果只有一个值,那么exec()
就可以了(而且您也不需要“全局”标志)
如果要使用match()
,只需将代码顺序稍微更改为:
var matches = sequence.match(/[a-zA-Z]+/g);
您可以这样做:
var r = 'AA18'.replace(/[\W\d_]/g, ''); // AA
这个
/[^a-z]/g
解决了这个问题。看看下面的例子
函数盘片(str){
设regExp=/[^a-z]/g;
让letters=str.toLowerCase().replace(regExp.);
document.getElementById('letters')。innerHTML=字母;
}
pangram(‘GHV 2#%hfr efg uor7 489(*&^%knt lhtkjj ngnm!@#$%^&*());
也可以通过String.prototype.split(regex)
完成
这里,regex将给定字符串除以数字
(\d+)
链接的regex^[a-zA-Z\s]+$
有一个不同的用途:它用于验证字符串是否只包含字母(和空格)。您希望匹配字符串中的字母。我想指出的是,此Q&As只针对英文字母,而不是“所有字母”,但字面上只有a-z/a-z,没有变音/重音字母,它不会匹配像é、è、è、ò、å、æ、œ、ē、č、ŭ等字母:)那样的字母,你需要/\p{Letter}/gu/g
并不意味着“贪婪”,而是意味着“全球”“:@SeanKendle。从技术上讲,是的当我回答这个问题时,我想我一定一直在思考fflag是如何改变行为的(“贪婪”似乎比“全局”更适合描述“捕获所有实例,而不仅仅是第一个实例”)。我已经更新了帖子的准确性。但是,对于regex,贪婪有一个非常具体的含义,而/g
并不是这样。这并没有保留案例。显然,这和其他答案是一样的。
var r = 'AA18'.replace(/[\W\d_]/g, ''); // AA
'AA12BB34'.split(/(\d+)/); // ["AA", "12", "BB", "34", ""]
'AA12BB34'.split(/(\d+)/)[0]; // "AA"