我想要完成的是根据文件名中的这些关键字自动生成文件上传的标签/关键字。
我已经为每次上传完成了自动生成标题,如下所示:
但我现在开始尝试自动生成关键字。类似于标题,但格式更多。首先,我通过它运行字符串以从文件名中删除常用词(例如this,that,there
...等)
我对此很满意,但我不需要包含其中包含数字的单词。如果单词包含数字,我还没有找到如何完全删除单词的解决方案。我在这里找到的解决方案仅适用于特定匹配,而这个解决方案仅删除数字。如果它包含任何数字,我想删除整个单词。
对当前文件名字符串应用一个简单的正则表达式,用空字符串替换所有出现的字符串。正则表达式匹配包含任何数字的“单词”。
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
)、零个或多个字母数字字符 ( \w*
)、后跟一个数字 ( \d
)、后跟零个或更多字母数字字符,后跟单词边界转换 ( \b
)。\b
匹配从单词的开头或结尾或非字母数字字符转换为字母数字字符的空字符串。正则表达式的g
末尾/
表示替换所有出现,而不仅仅是第一个。
删除数字单词后,您可以根据需要将字符串拆分为关键字(例如,通过空格)。
"asdf mayhem".split(/\s+/);
评估为:
["asdf", "mayhem"]
要删除所有包含数字的单词,请使用:
string = string.replace(/[a-z]*\d+[a-z]*/gi, '');
试试这个表达式:
var regex = /\b[^\s]*\d[^\s]*\b/g;
例子:
var str = "normal 5digit dig555it digit5 555";
console.log( str.replace(regex,'') ); //Result-> normal
('Apple Cover Photo 23s423 of your 543634 moms').match(/\b([^\d]+)\b/g, '')
返回
苹果封面照片,你的妈妈
使用它来删除包含 numeric 的单词:
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('');