假设我有以下字符串
Bimkingo Clasico Prom 135g LON 49835 Gansito ME 5p 250g MTA MLA 49860 Wonder
我想只提取不包含数字或仅包含大写字母的标记。
输出应为
Bimkingo Clasico Prom Gansito Wonder
这似乎不起作用:\b(([a-zA-Z]+)+)\b
。
答案 0 :(得分:1)
使用:
(\b[A-Z]?[a-z]+\b)+
从regexp库中检索所有组(因为没有办法将它放在一个组中)并用空格连接它们。
答案 1 :(得分:1)
以下正则表达式angular
.module('myApp')
.directive('employeeCard', function() {
return {
restrict: 'AEC',
scope: {employee :'='},
template: '<strong>{{ employee.name }}</strong>'
}
});
应该按预期工作,用于OP的帖子和其他边缘情况中的输出示例:
(\b[a-zA-Z]+[a-z]+\b)
&#13;
&#34; krzyk&#34;匹配发布的输出OP,但未能&#34; 仅提取不包含数字或仅包含大写字母的标记&#34;在边缘情况下,未由OP的示例输出表示。运行上面的代码段以更好地表示问题。
正则表达式解释:
var string = 'Bimkingo Clasico Prom 135g LON 49835 Gansito ME 5p 250g MTA MLA 49860 Wonder';
var regexp = /(\b[a-zA-Z]+[a-z]+\b)+/g;
var matches = string.match(regexp);
var output = "Bimkingo Clasico Prom Gansito Wonder";
console.log('Matches test output provided by OP "' + output + '":');
console.log(output === matches.join(' '), '\n');
console.log(''); // new line
// Cases not contained in OP's example output string...
var string = 'mArceLino marcelino';
console.log('Also matches all lowercase and uppercase mid word "' + string + '":', '\n');
var matches = string.match(regexp);
console.log(matches.length === 2);
console.log(''); // new line
var string = 'MARCEL1N0 MARCELINO11';
console.log('Excludes all uppercase with number mix "' + string + '":');
var matches = string.match(regexp);
console.log(matches === null);