javascript 字符串正则表达式(css有效性检查+转换)

标签 javascript css regex validation

给定一个字符串,例如以下之一:

'2'
'2px'
'2%'
'2em'
'2foobar'
'foobar'

我想确定:

1) 它是否是一个普通数字(2 或 2.2),如果它是圆的(Math.floor())并在其后附加 'px',这样,'2' 或 '2.2' 变成 ' 2px'

2) 如果它不是普通数字,则确定它是否是有效的 css 值,也就是说,它是否由数字(int 或 float)后跟“px”、“em”或“%”组成。我知道还有其他人,但我只支持这三个。如果是,请保留它。

3) 如果不是,则查看字符串是否以数字(int ot float)开头,将其四舍五入并附加'px'

4) 如果不是,则将其设置为空字符串

所以结果是:

'2'     -> '2px'
'2.2'   -> '2px'

'2%'    -> '2%'
'2em'   -> '2em'

'2foo' -> '2px'

'foo'  -> ''

是否有可能以一种紧凑的方式(可能使用正则表达式)或通过使用现有的 JS CSS 验证器库来做到这一点?

最佳答案

这是使用正则表达式的方法:

var input = '2.7em', output = parseInt(input, 10) + (input.match(/px|%|em/) || 'px')

编辑:

var input = '2.7foo'
, number = parseInt(input, 10)
, output = (isNaN(number)) ? '': number + (input.match(/px|%|em/) || 'px');

编辑 2:允许使用 em 和 % float :

var inp='3.5em'
, n=parseFloat(inp), p=inp.match(/%|em/)
, output = (isNaN(n)) ? '': (p)?n+p:Math.round(n)+'px';

关于javascript 字符串正则表达式(css有效性检查+转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652395/

相关文章:

javascript - Threejs BufferGeometry - 用其他纹理渲染一些面

html - 粘性页脚不起作用,让我的右栏变得疯狂

python - 匹配字符串的字符

php - 在正则表达式中包含大写和非大写字母

regex - Postgres 搜索字符 X 但不是 XX

javascript - 使用 ng-pattern 验证纬度和经度值

javascript - 使用 setInterval 循环从网页上的 JavaScript 发布到 Node 端点

javascript - 等待结果的调用方法 - 中间值尚未解析

html - Flexbox - 具有完整高度方形图像的水平组件

css - 我如何先显示侧边栏而不是内容