我有一个这样的字符串:
' #impact @John @Me Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam,quis nostrud exercitation ullamco Laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor 在voluptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum'
我需要分开'以两种方式删除第一个单词,因为它以'#'开头。 (我可以做/已经做过),第二个我无法弄清楚 - 我需要从字符串中删除所有以@开头的字(在上面的@Me和@John中)并将它们放入一个新的数组,所以我会有字符串
' Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et ....'
和数组
{@John,@ Me}
这个词开始' @ foo'可以是任何长度但可能少于8或10个字符
我找不到/写正确的regEx。我正在使用jQuery。
答案 0 :(得分:2)
假设inputString是你的输入:
//remove all words starting with # (you had this already)
var s = inputString.replace(/#\w+\s*/g,'');
var names = []; //names array to keep words with @
var match, rx = /@\w+/g; //regex, starts with @ followed by multiple word characters. g = all matches
while(match = rx.exec(s) ) //find all matches
names.push(match[0]); //you could remove the name here, but it's easier to do the remove at the end to include spaces
//remove all words starting with @, including trailing spaces
var cleanstring = s.replace(/@\w+\s*/g,'');
运行后,名称将是包含所有@words的数组,清除字符串而没有'特殊'词语的
你也可以选择做所有的清洁工作。之后,但保留在示例中,因为您说该部分正在工作。
要一次性完成清理,可以跳过第一次替换#
,在inputtring上执行上面的rx.exec,然后用以下内容清除整个字符串:var cleanstring = inputString.replace(/(@|#)\w+\s*/g,'');
这样可以清除所有单词以#
或@
开头,包括尾随空格。
一些有用的正则表达式链接: