【发布时间】:2013-11-12 01:43:22
【问题描述】:
我有一个有效的字符串somestr xyztip,其中xyz 是可选的。但是如果xyz 确实存在,它需要在tip 旁边(没有空格)。
所以有效的字符串是:somestr tip 或 somestr xyztip。
无效的字符串是:somestr xyz tip(xyz 和 tip 之间的空格)
我尝试了很多组合,但我无法让正则表达式在“xyz”和“tip”之间的空格处犹豫。下面的一个是我认为应该起作用的:
/^.+?\s(xyz)?tip$/
问题是 '(xyz)?' 之前的语法- 那是 '.+?\s' 。这是说任何字符 1 次或多次,而不是贪婪地后跟一个空格。
我在这里错过了什么?
【问题讨论】:
-
你想捕捉什么?
-
所以
xyz不能出现在字符串中的任何位置,除非它直接出现在tip之前?那么字符串'tuvwxyz tip'和'tuvwxyz xyztip'会无效吗? -
somestr不相关吗? IE。您正在寻找字符串xyztip,而不是xyz tip? -
正确,somestr 无关紧要,因为在可选的 'xyz' 之前有内容。
-
所以,@CraigP...这意味着“somexyzstr tip”和“somexyzstr xyztip”是有效的,但“somexyzstr xyz tip”不是......对吗?