如何使用正则表达式验证字符串的每个字符?验证规则正则表达式或Apex触发器?

时间:2018-02-17 03:55:27

标签: regex salesforce apex

我有一个大小为11的文本字段,必须使用不同的规则集验证字符串的每个字符。外汇。 :第一个字符只能接受[1-9],第二个字符只能接受某些字母,如[A-z&& [^ SLO]],第三个字符应接受[1-9] [A-Z]。什么是更好的方法,使用验证规则和正则表达式或顶点触发字符串验证?

我尝试编写正则表达式,但不超过5个字符验证。

NOT( REGEX( MBI_No__c , "^[1-9](?![SLIBZ])[A-Z][1-9](?![SLIBZ])[A-Z][A-Z_0-9]") )

这适用于5个字符的验证。以上验证有效,但不确定它是否准确。

2 个答案:

答案 0 :(得分:1)

在我看来,使用Apex触发器是更糟糕的选择。它需要至少相同或更多的努力(例如,批量化触发器,确保您没有在更新/插入时执行两次工作等),而不提供真正的好处。

因此,您的验证规则/正则表达式方法看起来没问题。

您可以使用否定前瞻或字符类减法来断言某些字符:

E.g。断言所有小写元音 在Java Apex

[a-z&&[^aeiou]]

可以用PCRE(PHP,R,Perl,Python和JavaScript)编写

(?![aeiou])[a-z] 
  

负向前瞻断言以下字符不是a   小写元音。然后[a-z]匹配一个字母,但不保证   成为元音。见Rexegg

答案 1 :(得分:1)

我最终为所有11个字符NOT( REGEX( MBI_No__c , "^[1-9](?![SLIBZ])[A-Z][1-9](?![SLIBZ])[A-Z][A-Z_0-9][1-9]*$") )

编写了验证规则

以上正则表达式最多可以使用6个字符串,可以扩展到11个字符。为了测试,我使用了https://regexr.com/