考虑下面的多行字符串:
CreatedDate
Account.Example_1__c
Account.LastModifiedDate
Test__r.Example_2__c
Test__r.OwnerId
Test__r.Owner.Name
Test__r.Owner.Custom__c
Test__r.Owner.Custom__r.Id
$Action.Account.New
$ObjectType.Account
$Api.Session_ID
$Label.firstrun_helptext
.
...
如何在JavaScript中使用REGEX匹配Salesforce字段并跳过全局变量(以"$"开头)?
REGEX应仅匹配以下内容:
CreatedDate
Account.Example_1__c
Account.LastModifiedDate
Test__r.Example_2__c
Test__r.OwnerId
Test__r.Owner.Name
Test__r.Owner.Custom__c
Test__r.Owner.Custom__r.Id
/[\w.]+/g
与Salesforce字段匹配,但结果中还包括单点和全局变量。
匹配项中不应包括.
、..
、...
等或全局变量。
- 其他示例:**
- 1)**注意,这可以是单行或多行字符串,并且字段可以出现在同一行上的其他数据之前和/或之后:
例如:
Test__r.Example_1__c >>>> (Test__r.Example_2__c) <<<< $Action.Account.New >>>> ... Test__r.Example_3__c
...应匹配:
Test__r.Example_1__c
Test__r.Example_2__c
Test__r.Example_3__c
- 2)**这些字段用于公式(如Excel公式),因此:
Example_1__c/Example_2__c*Example_3__c-Example_4__c+Example_5__c<>Example_6__c!=Example_7__c,Example_8__c
...应返回:
Example_1__c
Example_2__c
Example_3__c
Example_4__c
Example_5__c
Example_6__c
Example_7__c
Example_8__c
2条答案
按热度按时间7cwmlq891#
这个怎么样?
我们确保该部分不以
"$"
开头,然后将开头标记为字符串的开头、换行符或空格之后的任何内容,或者作为特殊情况标记为左括号之后的任何内容,然后匹配不以"."
开头的任何单词,然后允许点。Try it.
tcbh2hod2#
匹配
$
+单词/点字符以跳过这些匹配项,并使用单词/点模式匹配和捕获其余字符:请参见regex demo。* 详细信息 *:
\$[\w.]+
-$
,然后是一个或多个字/点字符|
-或(\w+(?:\.\w+)*)
-第1组:一个或多个字字符,然后是点的零个或多个序列,然后是一个或多个字字符。参见JS演示:
.filter(Boolean)
从结果中删除undefined
值,这些值是由于当前的模式逻辑(排除匹配项而不捕获)而出现的。