我需要匹配这样的字符串:
'if Country equals "United States" then Show'
我正在使用 Sitecore 中的营销人员网络表单模块。Sitecore 是一个基于 .NET 的 CMS。营销人员模块的 Webforms 是一个模块,它为非开发人员提供 GUI 来设计带有文本框、下拉列表、复选框等的表单......前一个字段中的选项。例如:仅当用户从 Country 下拉列表中选择“United States”时才显示 States 下拉列表。问题是,WFFM 模块不支持字段的条件渲染,所以我尝试用 JavaScript 自己实现它。我的想法是这样的:
- 我将使用所有可能的字段在模块中构建表单
- 当页面加载时,我将使用 JavaScript 隐藏依赖于先前字段值的字段
- 当用户与某个字段交互时,我将运行一些 JavaScript 来检查该字段的值并确定是否应该显示我在页面加载时隐藏的一个或多个字段。
我基本上是在为if
声明编写解释器;我正在为营销人员提供一种“编程”表单的方法。 Country
是我页面上下拉列表的名称。 equals
是一个条件。 "United States"
是下拉列表中的值之一。如果用户United States
在下拉列表中选择,then
Show
States 下拉列表。
因此,正则表达式测试的输入将始终遵循以下格式:
- 总是以关键字开头
if
- 后跟 1 个或多个空格
- 后跟任意数量的数字和/或字母和/或空格
- 控件名称可以包含多个带空格和偶数的单词
- 例如:名字或地址行 1
- 控件名称可以包含多个带空格和偶数的单词
- 后跟 1 个或多个空格
- 后跟关键字
equals
- 后跟 1 个或多个空格
- 后跟 1 个双引号
- 后跟任意数量的数字和/或字母和/或空格
- 控件的值可以包含多个带有空格和偶数的单词
- 后跟 1 个双引号
- 后跟 1 个或多个空格
- 后跟关键字
then
- 后跟关键字
Show
或关键字Hide
我有这么多有用的东西,但这并不是我上面列出的所有要求。此行一直匹配到控件名称后的空白处。
var pattern = /^if\s+(\d*|\w*)\s+.*$/;
但是当我尝试匹配双引号时它不起作用;我真的不知道在双引号上匹配的语法。我已经尝试了以下所有方法,没有任何工作:
var pattern = /^if\s+(\d*|\w*)\s+["].*$/;
var pattern = /^if\s+(\d*|\w*)\s+\".*$/;
var pattern = /^if\s+(\d*|\w*)\s+\"{1}.*$/;
您能提供的任何帮助将不胜感激!