Javascript 使用正则表达式查找符合特定条件的变量
我想在Notepad++中使用正则表达式来查找以下表达式: form1.子表单[0]。linestatus.rawValue 或 form1.subform.linestatus.rawValue 或者,一般模式如下(Adobe LiveCycle FormCalc表达式): element1.element2[index1].element3[index2].element4.element\u n.propName 其中[index1]和[index2]是可选的 此外,匹配应排除以下内容(Adobe LiveCycle JavaScript表达式): xfa.resolveNode(“form1.subform.linestatus”).rawValue xfa.resolveNode(“form1.subform[0].linestatus”).rawValue 或一般模式为(不得与以下内容匹配): 解析节点(“element1.element2[index1].element3[index2].element4”).propName 其中propName可以是以下任意固定名称: -原值 -通路 -格式化值 ……等等 最终的目标是能够使用find/replace将第一种语法(FormCalc)转换为第二种语法(JavaScript) 谢谢你的帮助 注意:到目前为止,我能够使用这个表达式,但还不够:Javascript 使用正则表达式查找符合特定条件的变量,javascript,regex,expression,adobe,livecycle,Javascript,Regex,Expression,Adobe,Livecycle,我想在Notepad++中使用正则表达式来查找以下表达式: form1.子表单[0]。linestatus.rawValue 或 form1.subform.linestatus.rawValue 或者,一般模式如下(Adobe LiveCycle FormCalc表达式): element1.element2[index1].element3[index2].element4.element\u n.propName 其中[index1]和[index2]是可选的 此外,匹配应排除以下内容(A
\b(?!xfa\.resolveNode\(\")([a-zA-Z_][a-zA-Z0-9_]*(\[([0-9]+)\])?\.)*rawValue
编辑:
我想我找到了解决办法,但我不确定为什么它会起作用。选中此项:
(^|[\s(])(?!xfa\.resolveNode\(")(([a-zA-Z][a-zA-Z0-9]*(\[[0-9]+\])?\.?)*)(\.rawValue)
下面是一个工作示例:
如果有人能解释它为什么起作用以及是否有更好的解决方案,我们将不胜感激
编辑:
这里是一个简化的regx。由于复杂性,最后一个在某些情况下会崩溃:
Find: (?:(^|[\s;(])(?!xfa\.resolveNode\(\".+\"\))((?:[a-zA-Z0-9_\.\[\]]*))(\.(?:rawValue|access|fillColor)))
Replace: \1xfa.resolveNode\("\2"\)\3
检查一下
Tarek检查最后一次编辑。我想我找到了解决方案,非常感谢您的反馈。简化了regx以防止由于无限回溯而导致崩溃。