<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2026 Huawei Device Co., Ltd.
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<phone_number_rule>
    <common>
        <rule>
            <insensitive>False</insensitive>  // 控制是否区分大小写
            <type>ZERO</type>
            <valid>Default</valid>  // 控制有效性规则校验类型
            <handle>Default</handle>
            <content>[@#][a-zA-Z_0-9-]{0,20}[0-9]{3,}[a-zA-Z_0-9-]{0,20}</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(?&lt;!\d)(?:[012]?\d|3[01])\p{Blank}{0,2}(\.|-|\/)\p{Blank}{0,2}(0?[1-9]|1[0-2])</content>
            <content>\p{Blank}{0,2}\1\p{Blank}{0,2}(20[01][0-9]|19\d{2})(?!\d)</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(?&lt;!\d)(?:(?:0?[1-9]|[1,2]\d|3[01])\p{Blank}{0,2}(\.|\s|-|\/)\p{Blank}{0,2}(?:0?[1-9]|[1-2]\d|3[01])</content>
            <content>(?:\p{Blank}{0,2}\1\p{Blank}{0,2}(?:20[01][1-9]|19\d{2}))?|(?:20[01][0-9]|19\d{2}\p{Blank}{0,2})</content>
            <content>(\.|\s|-|\/)\p{Blank}{0,2}(?:0?[1-9]|[1-2]\d|3[01])\p{Blank}{0,2}\2\p{Blank}{0,2}(?:0?[1-9]|[1-2]\d|3[01])</content>
            <content>\p{Blank}{0,2})\p{Blank}{0,2},?\p{Blank}{0,2}(?:[01]?\d|2[0-4])\p{Blank}{0,2}:\p{Blank}{0,2}[0-5]</content>
            <content>\d(?:\p{Blank}{0,2}:\p{Blank}:\p{Blank}{0,2}[0-5]\d)?(?!(\d|\.\d))</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(?&lt;!\d)(?:[01]?\d|2[0-4])\p{Blank}{0,2}:\p{Blank}{0,2}[0-5]\d(?:\p{Blank}{0,2}:\p{Blank}{0,2}[0-5]\d)?</content>
            <content>\p{Blank}{0,2}(?:(?:0?[1-9]|[1-2]\d|3[01])\p{Blank}{0,2}(\.|\s|-|\/)\p{Blank}{0,2}(?:0?[1-9]|[1-2]\d|3[01])</content>
            <content>(?:\p{Blank}{0,2}(?:20[01][0-9]|19\d{2}))?|(?:20[01][0-9]|19\d{2})\p{Blank}{0,2}(\.|\s|-|\/)\p{Blank}{0,2}</content>
            <content>(?:0?[1-9]|[1-5]\d)\p{Blank}{0,2}\3\p{Blank}{0,2}(?:0?[1-9]|[1-5]\d)\p{Blank}{0,2})(?!(\d|\.\d))</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(?&lt;![\d:.])(?:[01]?\d|2[0-4])([.:])[0-5]\d(?:\1[0-5]\d)?\p{Blank}{0,2}-\p{Blank}{0,2}</content>
            <content>(?:[01]?\d|2[0-4])\1[0-5]\d(?:\1[0-5]\d)?(?!(\d|[.]\d))</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>[a-zA-Z_0-9]{1,20}@[a-zA-Z_0-9]{1,20}\.[a-zA-Z]{1,10}</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>[0-9]+\p{Blank}{0,2}([Xx*/+-])\p{Blank}{0,2}[0-9]+(\p{Blank}{0,2}([Xx*/+-])\p{Blank}</content>
            <content>{0,2}[0-9]+)*\p{Blank}{0,2}=\p{Blank}{0,2}[0-9]+</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(?&lt;![\d:.])(?:[01]?\d|2[0-4])(:)[0-5]\d(?:\1[0-5]\d)?</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(?&lt;![a-zA-Z_0-9.@])((https?|ftp)://)?([a-zA-Z_0-9][a-zA-Z0-9_-]*(\.[a-zA-Z0-9_-]{1,20})*</content>
            <content>\.(org|com|edu|net|[a-z]{2})|(?!0)[1-2]?[0-9]{1,2}\.(?!0)[1-2]?[0-9]{1,2}\.(?!0)[1-2]?[0-9]{1,2}\.(?!0)[1-2]?[0-9]</content>
            <content>{1,2})(?![a-zA-Z0-9_.])(:[1-9][0-9]{0,4})?(/([a-zA-Z0-9/_.\p{Punct}]*(\?\S+)?)?)?(?![a-zA-Z_0-9])</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(;ext=)\d*(?!\d)</content>
        </rule>
    </common>
    <find_number>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>[\+\(\d][\d\p{Blank}\(\)\./-]{3,}[\d]</content>
        </rule>
        <rule>
            <insensitive>False</insensitive>
            <type>ZERO</type>
            <valid>Default</valid>
            <handle>Default</handle>
            <content>(?&lt;!(\d|\*|-))\d{2,6}(?!(\d|\*|-|%|分钟|版本))</content>
        </rule>
    </find_number>
</phone_number_rule>