小黄瓜语法黄瓜的正则表达式
Regular expression for gherkin syntax cucumber
我想写一个关于 Gherkin 的输入框验证的正则表达式 syntax.The 有效的示例输入是这样的
例如:
Given I enter "www.google.com"
And enter keyword "new york"
When I click on "Images"
Then I can see "image list"
基本上,我正在尝试:任何情况(给定|何时|然后|然后)+字符串+"String in quotes"
我试过了但没有用:(Given|When|And|Then)^[A-Za-z]+$/"(?:[^"\]|\.)*"/
创建了一个这样的表单
<body ng-app="app">
<form name="exampleForm" class="elegant-aero">
<label>Test Step:</label>
<input type="email" name="steps" ng-model="teststeps" ng-pattern="(Given|When|And|Then)^[A-Za-z]+$/"(?:[^"\]|\.)*"/" required/>
<div ng-messages="exampleForm.steps.$error">
<div ng-message="required">This field is required</div>
<div ng-message="pattern">Must be a valid gherkin syntax</div>
</div>
</form>
</body>
为了回答您的问题,这似乎有效,并执行每个片段的捕获:
(Given|When|Then|AND)([^"]+)(".+")
更进一步,尝试通过嵌入 DOM 中的正则表达式用语法来验证一种语言听起来非常痛苦,而且是个坏主意。特别是因为小黄瓜并没有真正遵循您在问题中建议的格式。
如果您出于某种原因需要这样做,我建议您使用实际的小黄瓜库来解析字符串:https://github.com/cucumber/gherkin3
你需要使用
<input type="text" name="steps" ng-model="teststeps" ng-pattern="/^(Given|When|And|Then)(?:\s+[A-Za-z]+)+\s+\x22[^\x22\]*(?:\.[^\x22\]*)*\x22$/" required/>
首先,将type
改为text
。其次,请注意引号不能用作普通引号或转义引号,您需要在模式中使用 "
或 \x22
。第三,引用的 C 字符串(带有转义序列)与展开的模式(即 "[^"\]*(?:\.[^"\]*)*"
)更好地匹配——这是我所知道的对于那些“...”字符串最有效的模式。
我想写一个关于 Gherkin 的输入框验证的正则表达式 syntax.The 有效的示例输入是这样的 例如:
Given I enter "www.google.com"
And enter keyword "new york"
When I click on "Images"
Then I can see "image list"
基本上,我正在尝试:任何情况(给定|何时|然后|然后)+字符串+"String in quotes"
我试过了但没有用:(Given|When|And|Then)^[A-Za-z]+$/"(?:[^"\]|\.)*"/
创建了一个这样的表单
<body ng-app="app">
<form name="exampleForm" class="elegant-aero">
<label>Test Step:</label>
<input type="email" name="steps" ng-model="teststeps" ng-pattern="(Given|When|And|Then)^[A-Za-z]+$/"(?:[^"\]|\.)*"/" required/>
<div ng-messages="exampleForm.steps.$error">
<div ng-message="required">This field is required</div>
<div ng-message="pattern">Must be a valid gherkin syntax</div>
</div>
</form>
</body>
为了回答您的问题,这似乎有效,并执行每个片段的捕获:
(Given|When|Then|AND)([^"]+)(".+")
更进一步,尝试通过嵌入 DOM 中的正则表达式用语法来验证一种语言听起来非常痛苦,而且是个坏主意。特别是因为小黄瓜并没有真正遵循您在问题中建议的格式。
如果您出于某种原因需要这样做,我建议您使用实际的小黄瓜库来解析字符串:https://github.com/cucumber/gherkin3
你需要使用
<input type="text" name="steps" ng-model="teststeps" ng-pattern="/^(Given|When|And|Then)(?:\s+[A-Za-z]+)+\s+\x22[^\x22\]*(?:\.[^\x22\]*)*\x22$/" required/>
首先,将type
改为text
。其次,请注意引号不能用作普通引号或转义引号,您需要在模式中使用 "
或 \x22
。第三,引用的 C 字符串(带有转义序列)与展开的模式(即 "[^"\]*(?:\.[^"\]*)*"
)更好地匹配——这是我所知道的对于那些“...”字符串最有效的模式。