【发布时间】:2017-01-15 10:37:53
【问题描述】:
我一直在尝试让 JS 正则表达式匹配如下:
“一些字符串的东西[其他字符串的东西]更多的字符串东西”
'[' 和 ']' 字符是可选的。 然后之间的文本不是可选的(可以是单个字母数字甚至是完整的句子)。 到目前为止,我已经提出了(以及介于两者之间的许多其他想法的迭代):
/^(some string stuff \[?.*\]? more string stuff)$/gim
当我逐行测试时,请注意“gim”参数,查找所有匹配项并忽略大小写。 但是每个测试似乎都令人沮丧地几乎可以工作,但并不完全,我的正则表达式 fu 似乎并不那么强大! 我浏览了其他论坛帖子,同样一些几乎可以工作,但即使经过大量修补也不太可能。 任何帮助将不胜感激!
编辑
开头的“一些字符串内容”和结尾的“更多字符串内容”对于字符串有效是强制性的。只是它们之间的文本有差异; ie 可以是任何东西,只要它不是换行符。
有效文本示例:
some string stuff [other string stuff] more string stuff
some string stuff other string stuff more string stuff
some string stuff string more string stuff
some string stuff [string] more string stuff
无效文本示例:
some string stuff more string stuff
some string stuff [] more string stuff
some string stuff more string stuff
some string stuff \n more string stuff
【问题讨论】:
-
这似乎对我有用:regex101.com/r/nK1hS7/1.
-
.*周围有可选字符没有意义,因为.*会自行匹配这些字符。 -
给出一些样本输入和预期输出。您的问题相当广泛/难以解释。
-
如果您提供了应该不匹配的字符串示例,将会有所帮助。您的正则表达式匹配以
some string stuff开头并以more string stuff结尾的任何内容。 -
正则表达式中
\]?后面的空格是不间断空格,不是标准空格,所以它不起作用。
标签: javascript regex string match