1〜32文字の文字列を検証するコードがあります。このコードには、英数字とハイフン('-')のみが含まれている可能性がありますが、ハイフンで開始または終了することはできません。
私はPCRE正規表現とPHPを使用しています(この場合、PHPの部分はそれほど重要ではありませんが)。
現在、擬似コードは次のようになっています。
if (match("/^[\p{L}0-9][\p{L}0-9-]{0,31}$/u", string)
and
not match("/-$/", string))
print "success!"
つまり、最初に文字列が正しい内容であり、「-」がなく、正しい長さであることを確認してから、別のテストを実行して、文字列がで終わっていないことを確認します。 '-'。
これを単一のPCRE正規表現にマージするための提案はありますか?
先読み/後読みアサーションを使用しようとしましたが、機能させることができませんでした。