Javascript正则表达式获取子字符串,排除模式?
我还是一个初学者:)
我需要获取一个子字符串,忽略 []
内的最后一部分(包括括号 []),即忽略 [something inside]
部分到底。
注意 - 字符串中可能还会出现其他单一的 [
。它们应该出现在结果中。
示例
表单的输入 -
1 checked arranged [1678]
所需的输出 -
1 checked arranged
我尝试使用此
var item = "1 checked arranged [1678]";
var parsed = item.match(/([a-zA-Z0-9\s]+)([(\[d+\])]+)$/);
|<-section 1 ->|<-section 2->|
alert(parsed);
我试图表示以下内容 -
第 1 节 - 多次出现单词(包含文字和编号),后跟空格
第 2 部分 - 忽略最后的模式 [something]。
但我收到 1678],1678,]
并且我不确定它会朝哪个方向发展。
谢谢
I am still a beginner :)
I need to get a substring ignoring the last section inside []
(including the brackets []), i.e. ignore the [something inside]
section in the end.
Note - There could be other single occurances of [
in the string. And they should appear in the result.
Example
Input of the form -
1 checked arranged [1678]
Desired output -
1 checked arranged
I tried with this
var item = "1 checked arranged [1678]";
var parsed = item.match(/([a-zA-Z0-9\s]+)([(\[d+\])]+)$/);
|<-section 1 ->|<-section 2->|
alert(parsed);
I tried to mean the following -
section 1 - multiple occurrences of words (containing literals and nos.) followed by spaces
section 2 - ignore the pattern [something] in the end.
But I am getting 1678],1678,]
and I am not sure which way it is going.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
好的,这是您的表达式中的问题
问题仅出现在最后一部分,
这使我们可以
在 这里在 Regexr 上查看它,完整的字符串被匹配,捕获组 1 中的第 1 部分和组 2 中的第 2 部分。
现在,当您将整个字符串替换为组 1 的内容时,您就完成了。
OK here is the problem in your expression
The Problem is only in the last part
That brings us to
See it here on Regexr, the complete string is matched, the section 1 in capturing group 1 and section 2 in group 2.
When you now replace the whole thing with the content of group 1 you are done.
你可以这样做
http://jsfiddle.net/jasongennaro/ZQe6Y/1/
这个< code>s.indexOf('['); 检查第一个
[
出现在字符串中的位置。此
s.substring(0,a);
会从开头到第一个[
截取字符串。当然,这假设字符串始终采用相似的格式
You could do this
http://jsfiddle.net/jasongennaro/ZQe6Y/1/
This
s.indexOf('[');
checks for where the first[
appears in the string.This
s.substring(0,a);
chops the string, from the beginning to the first[
.Of course, this assumes the string is always in a similar format
我使用的正则表达式利用 正向预测 来排除字符串中不需要的部分。括号中的数字必须是字符串的一部分才能匹配成功,但不会在结果中返回。
The regular expression I used makes use of a positive lookahead to exclude the undesired portion of the string. The bracketed number must be a part of the string for the match to succeed, but it will not be returned in the results.
在这里您可以找到如何删除方括号内的内容。剩下的就交给你了。 :)
正则表达式:删除方括号内容
Here you can find how to delete stuff inside square brackets. This will leave you with the rest. :)
Regex: delete contents of square brackets
如果你只想最后摆脱那个 [] 试试这个
try this if you only want to get rid of that [] in the end
那工作如愿吗?
That work as desired?
使用转义括号和非捕获括号:
正则表达式的解释:
Use escaped brackets and non-capturing parentheses:
Explanation of regex: