0

PHP クラス、メソッド、および関数名を照合して検証するために使用される次の正規表現があります。これは、もともと PHP のサイトから取得したものです (以下にリンク)。

問題は、単一の文字クラスと一致しないことです。次に例を示します。

class a{}
class b{}
class A{}
class B{}

正規表現は次のとおりです。

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

今は正規表現が苦手なので、できれば使わないことにしましたが、今回は正規表現を使うことにしました。

正規表現に 2 つの基本的な変更を加える必要があります。

  • 1 文字を許可する
  • __ で始めることはできません(ただし、単一のアンダースコアとそれに続く文字で始めることはできます)

私を助けることができる正規表現の第一人者はいますか。

よろしく

4

1 に答える 1

2

これは可能な答えです:

単一文字クラス:

var_dump(preg_match('~^(_(?!_)|[a-zA-Z\x7f-\xff])[a-zA-Z0-9_\x7f-\xff]*$~', 'a')); // 1

単一のアンダースコア クラス:

var_dump(preg_match('~^(_(?!_)|[a-zA-Z\x7f-\xff])[a-zA-Z0-9_\x7f-\xff]*$~', '_')); // 1

二重下線クラス:

var_dump(preg_match('~^(_(?!_)|[a-zA-Z\x7f-\xff])[a-zA-Z0-9_\x7f-\xff]*$~', '__a')); //0
于 2011-07-04T05:25:09.860 に答える