2013-10-16 31 views
0

我正在学习javascript,并被正则表达式(正则表达式)弄糊涂了。它有时可能是语法,但大多数我对正则表达式的理解很差。例如var pattern = /^0+$/;只是看起来像垃圾给我。你如何用正则表达式javascript来做到这一点?

这个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,要考虑的事情,并尽量保持人类可读的有特定的技术?

感谢您的帮助和建议:)

+0

请告诉我模式? 1 = 100%,2 = 50%,3 = 32%,4 = 25% – tymeJV

+0

这与正则表达式有什么关系?你没有匹配任何东西。 – Becuzz

+1

@tymeJV是啊只是100的儿童数量,百分比 –

回答

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]); 
+0

您的代码不包括'其他''声明哪里'navlinks'是'0' – Patryk

+0

@Patryk - 它现在:) – tymeJV

2

VAR模式=/^ 0 + $ /;只是看起来像垃圾给我。

其实这是一个容易的,它只匹配一个字符串,如果该字符串只包含0 s。

这个jQuery if/else语句可以转换为正则表达式吗?如果是这样,如何/为什么?

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

+0

谢谢@Sniffer。真的很有帮助。有没有特别的方法去阅读正则表达式?也许格式化?还是只是一个学习和使用的案例? –

+2

@M_Willett这是一个学习和使用的案例,练习是必不可少的。你可以从[Regular Expressions Info](http://www.regular-expressions.info)开始学习。 –

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%') 
相关问题