如果字符串包含数值,则从字符串中删除整个单词

时间:2012-06-30 16:10:15

标签: javascript regex string

我想要完成的是为文件上传自动生成标签/关键字,并根据文件名来设置这些关键字。

我为每次上传完成了自动生成标题,如下所示: enter image description here

但我现在已经开始尝试自动生成关键字。与标题类似,但格式更多。首先,我通过 this 运行字符串,以删除文件名中常用的字词(例如this,that,there ...等)

我很满意,但我需要不包含有数字的单词。如果它包含一个数字,我还没有找到完全删除单词的解决方案。我发现的解决方案here仅适用于特定匹配,而this one仅删除数字。 如果它包含任何数字,我想删除整个单词。

5 个答案:

答案 0 :(得分:1)

将简单的正则表达式应用于当前文件名字符串,将所有出现的内容替换为空字符串。正则表达式匹配包含任何数字的“单词”。

Javascript示例:

'asdf 8bit jawesome234 mayhem 234'.replace(/\s*\b\w*\d\w*\b/g, '')

评估为:

"asdf mayhem"

这里的正则表达式为/\s*\b\w*\d\w*\b/g,它匹配由零个或多个空格字符(\s*)组成的最大序列,后跟一个字边界转换(\b),后跟零或更多的alphanum字符(\w*),后跟一个数字(\d),后跟零个或多个alphanum字符,然后是字边界转换(\b)。 \b将过渡时的空字符串与单词的开头或结尾的字母数字字符或非字母数字字符进行匹配。正则表达式的最后g之后的/意味着替换所有出现,而不仅仅是第一次出现。

删除数字后,您可以根据需要将字符串拆分为关键字(例如,通过空格)。

"asdf mayhem".split(/\s+/);

评估为:

["asdf", "mayhem"]

答案 1 :(得分:1)

试试这个表达式:

 var regex = /\b[^\s]*\d[^\s]*\b/g;

示例:

 var str = "normal 5digit dig555it digit5 555";
 console.log( str.replace(regex,'') );​   //Result->  normal    

答案 2 :(得分:1)

('Apple Cover Photo 23s423 of your 543634 moms').match(/\b([^\d]+)\b/g, '')

返回

Apple Cover Photo,你妈妈的照片

http://jsfiddle.net/awBPX/2/

答案 3 :(得分:0)

要删除包含数字的所有字词,请使用:

string = string.replace(/[a-z]*\d+[a-z]*/gi, '');

答案 4 :(得分:0)

用它来删除包含数字的单词:

string.replace("[0-9]","");

希望这会有所帮助。

已编辑:

检查一下:

var str = 'one 2two three3 fo4ur 5 six';
var result = str.match(/(^[\D]+\s|\s[\D]+\s|\s[\D]+$|^[\D]+$)+/g).join('');