私が正しく理解していれば、側面(左/右/上/下)またはコーナー(左上、右下...)のいずれかが必要です。
これは次のように解決できます:
/^((left|right|top|bottom)|((top|bottom)delimiter(left|right)))$/
もちろん、コーナー表記の側面の順序を逆にすることもできます(コーナーを左上ではなく左上として出力するため):
/^((left|right|top|bottom)|((left|right)delimiter(top|bottom)))$/
区切り文字は目的の区切り文字であることに注意してください(空のスペースまたはマイナス記号にすることができます)。
お役に立てれば!
PS:ツイッターで助けを求めるあなたの呼びかけを聞いた:P。
あなたの編集に基づいて更新
します、私は今あなたが必要なものを理解していると思います:
/^((left|right|top|bottom)|((left|right|(-?\d*(\.\d+)?(px|em|\%)))\s+(top|bottom|(-?\d*(\.\d+)?(px|em|\%)))))$/
この正規表現は、方向キーワード(左/上/右/下)または実際の値(またはなど)のいずれかである、左と上の値で定義された側面(左/上/右/下)または2つの側面に一致するようになりました。 。
値の正規表現()は、任意の浮動小数点数(最初のゼロがなくても:の代わりに)とそれに続く測定単位(ここでは、単位の完全なリストを指定できます )と一致します。100px
1.4em
-?\d*(\.\d+)?(px|em|\%)
.123
0.123
合格した私の(javascript)テストの一部を次に示します。
var pattern = /^((left|right|top|bottom)|((left|right|(-?\d*(\.\d+)?(px|em|\%)))\s+(top|bottom|(-?\d*(\.\d+)?(px|em|\%)))))$/;
pattern.test('left bottom'); // true
pattern.test('-10px top'); // true
pattern.test('-.23em 140%'); // true
最終更新
- 開始文字と終了文字を削除しました
- サイドパターンとコーナーパターンの順序を入れ替え、コーナーパターンを優先して最初に一致させる
/(((left|right|(-?\d*(\.\d+)?(px|em|\%)))\s+(top|bottom|(-?\d*(\.\d+)?(px|em|\%))))|(left|right|top|bottom))/