正規表現の問題があります
その文字列に誤りがないかどうかを確認するために、定義済みの文字列を指定してユーザーを検証する必要があります。テストの下に単体テストを作成して、一致する必要がある文字列と一致しない文字列を確認できるようにしました。私がすでに持っていて、ほとんどの場合に機能するもの:
/^product:\[(.*?)\]|default:\[(.*?)\]$/
まだテストする必要があるのは、[] と | の間の値にカウントされない空白があってはならないことです。そこにいる必要があります。しかし、最後ではありません
return array(
array(
'default:[6_400]',
TRUE
),
array(
'default:[bla_bla]',
TRUE
),
array(
'default:[bla _ bla]',
TRUE
),
array(
'product:8[8_400]|default:[6_400]',
TRUE
),
array(
'product:8[8_400]|default:[6_400]|product:10[10_400]',
TRUE
),
array(
'product:8[8_400]|product:12 [12_400]|default:[6_400]',
FALSE
),
array(
'roduct:8[8_400]|product:12[12_400]|default[6_400',
FALSE
),
array(
'default:6_400',
FALSE
),
array(
'product:8[8_400]',
FALSE
),
array(
'product:8[8_400]default:[6_400]',
FALSE
),
array(
'product:8[8_400]|default:[6_400]|',
FALSE
),
);