Sharepoint 在线:使用@currentField.x 时捕获索引错误

Sharepoint online: catch index errors when using @currentField.x

我正在尝试验证列的输入。输入必须是 123-45.678.901ab.

模式

我最接近的是使用 JSON 格式:

{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "div", "txtContent": "@currentField", “风格”: { “背景色”:“=if(@currentField.length>13,if((@currentField.0>='0')&&(@currentField.0<='9')&&(@currentField.1 >='0')&&(@currentField.1<='9')&&(@currentField.2>='0')&&(@currentField.2<='9')&&(@currentField.3== '-')&&(@currentField.4>='0')&&(@currentField.4<='9')&&(@currentField.5>='0')&&(@currentField.5<='9 ')&&(@currentField.6=='.')&&(@currentField.7>='0')&&(@currentField.7<='9')&&(@currentField.8>='0') &&(@currentField.8<='9')&&(@currentField.9>='0')&&(@currentField.9<='9')&&(@currentField.10=='.')&&( @currentField.11>='0')&&(@currentField.11<='9')&&(@currentField.12>='0')&&(@currentField.12<='9')&&(@currentField .13>='0')&&(@currentField.13<='9'), if(@currentField.length>14,if((@currentField.14>='a')&&(@ currentField.14<='z')||(@currentField.14>='A')&&(@currentField.14<='Z'), if(@currentField.length> 15,如果((@currentField.15>='a')&&(@currentField.15<='z')||(@currentField.15>='A')&&(@currentField .15<='Z'),'green', 'red'), 'red'),'red'),'red'),'red' ),'red')" } }

enter image description here

问题是,如果输入少于 16 个字符,我的整个公式就会崩溃(既不是绿色也不是红色)。我希望通过在访问 @currentField.15 之前调用 if(@currentField.length>15) 来防止这种情况发生。如果输入太短,是否有正确的方法来使用 @currentField.X 而不会崩溃?

您可以尝试以下方法,使用 substring(@currentField, 15, 16) 而不是 @currentField.15

if(@currentField.length>15,if((substring(@currentField, 15, 16)>='a')&&(substring(@currentField, 15, 16)<='z')||(substring(@currentField, 15, 16)>='A')&&(substring(@currentField, 15, 16)<='Z')