1

たとえば、電話番号を含む文字列を検証して、最初に「+」、次に2桁の数字、次に数字のシーケンス、またはハイフンまたはスペースのいずれかの単一インスタンスを適用したいとします。文字列は数字で終わる必要があります。

私は現在持っています:

<xs:pattern value="\+\d{2}[- ]?[\d -]+[\d]"/>

ただし、これは文字列内のスペースまたはハイフンの繰り返しを制限するものではありません。これはどのように達成できますか?

4

1 に答える 1

2

「...次に、数字のシーケンス、またはハイフンまたはスペースのいずれかの単一インスタンス」と言います。これは、文字通り、次のすべてが受け入れられることを示しています(スペースで終わる文字列を引用します)。

"+01 "
+01-
+4312345678912345678900

あなたのコードを見ると、あなたは非公式に話していたと思います。あなたが望むものは、プラス、2桁、そして最大で1つのハイフンまたはスペースで中断された一連の数字として説明する方がよいでしょう。それが正確な言い換えである場合は、試してみてください

\+\d{2}\d*[- ]?\d+

最大1つのハイフン最大1つのスペースを許可する場合、それははるかに複雑になりますが、それでも表現可能です。空の数字のシーケンスを受け入れたくないと仮定します。

\+\d{2}(\d+|(\d*(-\d+| \d+)?))

[未検証。]

于 2012-09-24T23:39:03.223 に答える