你会如何用正则表达式javascript做到这一点?

时间:2013-10-16 14:04:35

标签: javascript regex

我正在学习javascript并且被正则表达式(正则表达式)弄糊涂了。它有时可能是语法,但大部分我对正则表达式的理解非常差。例如var pattern = /^0+$/;对我来说就像垃圾一样。

这个jQuery if / else语句可以转换为正则表达式方法吗?如果是的话,怎么/为什么?

// Set header link widths based on how many there are

var nav = $('#nav_header a');
var navlinks = $('#nav_header').children('a').length;
if (navlinks == 1) {
    nav.css('width', '100%');
} else if (navlinks == 2) {
    nav.css('width', '50%');
} else if (navlinks == 3) {
    nav.css('width', '32%');
} else if (navlinks == 4) {
    nav.css('width', '25%');
} else if (navlinks == 5) {
    nav.css('width', '20%');
} else if (navlinks == 6) {
    nav.css('width', '16.6%');
} else if (navlinks == 7) {
    nav.css('width', '14.25%');
} else if (navlinks == 8) {
    nav.css('width', '12%');
} else if (navlinks == 9) {
    nav.css('width', '11%');
} else if (navlinks == 10) {
    nav.css('width', '10%');
} else {
    nav.css('width', '8%');
}

是否有编写正则表达式JS的特定技术,需要考虑的事项以及尝试使其具有人类可读性?

感谢您的帮助和建议:)

3 个答案:

答案 0 :(得分:5)

我的建议是,创建一个简单的查找数组:

var percents = ["100%", "50%", "32%", "25%", "20%", "16.6%", "14.25%", "12%", "11%", "10%", "8%"];

var nav = $('#nav_header a');
var navlinks = $('#nav_header').children('a').length;
navlinks == 0 ? nav.css("width", "8%") : nav.css("width", percents[navlinks - 1]);

答案 1 :(得分:2)

  

var pattern = / ^ 0 + $ /;对我来说就像废话一样。

实际上这很简单,如果该字符串仅包含0,则只匹配字符串。

  

这个jQuery if / else语句可以转换为正则表达式方法吗?如果是的话,怎么/为什么?

不,不能。正则表达式用于查找文本中的模式或围绕给定模式拆分文本或替换给定模式。它们不能用于代替条件语句。

答案 2 :(得分:0)

你不需要正则表达式:)

var nav = $('#nav_header a');
var navlinks = $('#nav_header').children('a').length;
var widths = ['100%', '50%', '32%', '25%', '20%', '16.6%', '14.25%', '12%', '11%', '10%']
nav.css('width', (navlinks >= 1 && navlinks <= 10) ? widths[navlinks-1] : '8%')