如果我理解正确的,你想要么侧(左/右/上/下)或角落(左上角,右下角 ...)。
这是可以解决的,就像这样:
/^((left|right|top|bottom)|((top|bottom)delimiter(left|right)))$/
就可以了,当然,扭转双方的顺序拐角符号(输出拐角左上而不是左上) :
/^((left|right|top|bottom)|((left|right)delimiter(top|bottom)))$/
请注意,分隔符是您想要的分隔符(可以是空格或减号)。
希望这有助于!
P.S. :我在Twitter上听到您的求助电话:P。
更新
根据您的修改,我觉得现在我明白你需要什么:
/^((left|right|top|bottom)|((left|right|(-?\d*(\.\d+)?(px|em|\%)))\s+(top|bottom|(-?\d*(\.\d+)?(px|em|\%)))))$/
此正则表达式现在的一侧(左/上/右/底部)或双方一致由左侧&顶部值定义,其可以是方向关键字(左侧/顶部/右侧/底部)或实际值(例如100px
或1.4em
)。
值的正则表达式()任何浮点数(甚至不用加0:.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))/
看到更新请 –