Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从字符串中删除所有括号、逗号等,然后提取前5个单词_Javascript_Regex - Fatal编程技术网

Javascript 从字符串中删除所有括号、逗号等,然后提取前5个单词

Javascript 从字符串中删除所有括号、逗号等,然后提取前5个单词,javascript,regex,Javascript,Regex,我有一根绳子,例如: Lenovo K6 Power (Silver, 32 GB)(4 GB RAM), smart phone 我想删除所有括号和括号内的内容,逗号等,然后只提取前五个单词,这样我就可以得到如下结果 Lenovo K6 Power smart phone 有没有什么方法可以应用正则表达式来获得这个结果 var myString = "Lenovo K6 Power (Silver, 32 GB)(4 GB RAM), smart phone"; while (/\(.*

我有一根绳子,例如:

Lenovo K6 Power (Silver, 32 GB)(4 GB RAM), smart phone
我想删除所有括号和括号内的内容,逗号等,然后只提取前五个单词,这样我就可以得到如下结果

Lenovo K6 Power smart phone
有没有什么方法可以应用正则表达式来获得这个结果

var myString = "Lenovo K6 Power (Silver, 32 GB)(4 GB RAM), smart phone";

while (/\(.*\)/.test(myString)) {
    myString = myString.replace(/\(.*?\)/.exec(myString)[0],'');
}

console.log(myString.match(/\w+/g));
第一个代码段匹配所有括号对,只要存在一些括号对并将其删除,那么它将匹配所有剩余的单词

输出:对象。。。[“联想”、“K6”、“电源”、“智能”、“手机”]

这是一个通用的解决方案,始终只获取前5个元素,将控制台日志更改为

var obj = myString.match(/\w+/g); 
for (var i = 0; i < 5; i ++) 
{ 
console.log(obj[i]); 
}
var obj=myString.match(/\w+/g);
对于(变量i=0;i<5;i++)
{ 
console.log(obj[i]);
}
第一个代码段匹配所有括号对,只要存在一些括号对并将其删除,那么它将匹配所有剩余的单词

输出:对象。。。[“联想”、“K6”、“电源”、“智能”、“手机”]

这是一个通用的解决方案,始终只获取前5个元素,将控制台日志更改为

var obj = myString.match(/\w+/g); 
for (var i = 0; i < 5; i ++) 
{ 
console.log(obj[i]); 
}
var obj=myString.match(/\w+/g);
对于(变量i=0;i<5;i++)
{ 
console.log(obj[i]);
}

这里有一种方法:

var str='Lenovo K6 Power(银色,32 GB)(4 GB内存)';

document.write(str.match(/\w+/g).slice(0,5).join(“”))这里有一种方法:

var str='Lenovo K6 Power(银色,32 GB)(4 GB内存)';

document.write(str.match(/\w+/g).slice(0,5).join(“”))您的问题极其琐碎,可以用最基本的JavaScript技能来回答。我强烈建议你回去复习你的教程和介绍,试着自己解决你的问题

要删除某些内容,只需执行以下操作

string.replace(WHAT, '')
换言之,您可以用空字符串
'
替换某些内容。在您提到的例子中,简单的谷歌搜索“javascript remove regexp”之类的内容将为您提供大量的指针。在这种情况下

在你的例子中,我猜你最终决定删除括号和括号内的内容。在学习regexp的前五分钟左右,您应该已经学会了编写

/\(.*?\)/g
 ^^              an actual left paren
   ^^^           any number of characters
      ^^         an actual right paren
         ^       match this over and over again
如果您需要这方面的帮助,请尝试使用在线regexp测试仪,如regex101.com。它还将为您提供一个可读的regexp版本

关于这一点,唯一稍微高级的是
*?
,其中
的意思是“非贪婪”——换句话说,只在下一个右括号中取字符

我相信您已经了解了为什么必须编写
\(
来匹配左括号,对吗?
\
会转义括号,因为括号本身对regexp有特殊的意义。您也知道
g
标志,对吗?这意味着替换所有匹配项

要找到前五个标记,首先需要将字符串拆分为标记。我相信您会从学习中回忆起基本的
Array
方法,包括--drumn roll--
拆分
!使用
字符串拆分字符串。拆分(“”)
。这将在单个空格上拆分。如果要在任何空格上拆分,可以尝试
string.split(/\s+/)

现在返回并仔细阅读
split
real的文档,尽管我知道您已经有了。请仔细查看第二个参数,名为
limit
。它完全按照您的要求执行。它可以拆分为段,但不超过limit指定的值

如果你花了大约五分钟的时间研究文档并进行实验,你很容易就能想出解决问题的办法

input.replace(/\(.*?\)/g, '').split(/\s+/, 5)
不幸的是,你在堆栈溢出上发布的方法根本无法很好地扩展。你不能每次都在这里发布一些你自己无法解决的小问题。坦率地说,如果你不能学会如何学习,那么你最好放弃做程序员,试着做些铺路砖的工作。你需要学习如何自己解决问题。在做其他事情之前,你需要学习如何阅读(和消化)文档。在你职业生涯的早期,你还需要学习如何调试你的程序,因为堆栈溢出并不是一种更好的调试程序的方法,而不是一开始就为你编写程序。如果你只是不能自己阅读文档或自学,而只能通过询问其他人来工作人们如何做每一件小事,然后找到一个聊天室或论坛,那里的人们除了回答这样的问题没有什么更好的事情可做。这不是堆栈溢出


console.log('Lenovo K6 Power(银色,32 GB)(4 GB内存),智能手机)。替换(/\(.*?\)/g',).split(/\s+/,5));
您的问题非常简单,可以用最基本的JavaScript技能来回答。我强烈建议您回去回顾一下教程和介绍,并尝试自己解决问题

要删除某些内容,只需执行以下操作

string.replace(WHAT, '')
换句话说,你用空字符串替换了一些东西(空字符串
'
)。在你提到的例子中,一个简单的谷歌搜索“javascript remove regexp”之类的东西会给你很多指针。在这种情况下

在你的例子中,我猜你最终决定删除括号以及括号内的内容。在学习regexp的前五分钟,你应该已经学会了编写

/\(.*?\)/g
 ^^              an actual left paren
   ^^^           any number of characters
      ^^         an actual right paren
         ^       match this over and over again
如果您需要这方面的帮助,请尝试使用在线regexp测试工具,如regex101.com。它还将为您提供可读的regexp版本

关于这一点,唯一稍微高级的是
*?
,其中
的意思是“非贪婪”——换句话说,只在下一个右括号中取字符

我相信您已经了解了为什么必须编写
\(
来匹配左括号,对吗?
\
会转义括号,因为括号本身