在进行字符串分析提取有用子串时,我们使用正则表达式使我们的内容变的简单!
建议使用RegExp对象,当然,你完全可以使用直接量的方式构建你的正则表达式,此对象的构建方式:
var regExp = new RegExp('正则表达式', '标记');
如果我们使用正则表达式完成字符串的分组提取,就得注意这个标记了,RegExp对象有个exec(..)方法,而这个exec方法与我们构建表达式对象的[g]标记关系又比较密切,regExp.exec()方法无论在是否含有g标记时都会返回一个匹配数组,该数组第一个元素array[0]存储完全匹配的字符串, array[1] 当我们使用分组表达式的时候也是全局字符串array[0]==array[1],而array[2]将会是我们分组提取的表达式! 这是一个匹配科学计数法,并提取相应字符的示例:
view plaincopy to clipboardprint?
01./**
02. * 科学计数法的转换
03. * @author wyc
04. */
05.function convertNUM(beforeCountTest) {
06. //转换之前的科学计数法表示
07. var tempValue = beforeCountTest.value;
08. var tempValueStr = new String(tempValue);
09. if ((tempValueStr.indexOf( 'E' ) != -1) || (tempValueStr.indexOf( 'e' ) != -1)){
10. alert(tempValueStr + '是科学计数法表示!' );
11. var regExp = new RegExp( '^((//d+.?//d+)[Ee]{1}(//d+))$', 'ig' );
12. var result = regExp.exec(tempValue);
13. var resultValue = "" ;
14. var power = "" ;
15. if (result != null ){
16. resultValue = result[2];
17. power = result[3];
18. result = regExp.exec(tempValueStr);
19. }
20. if (resultValue != "" ) {
21. if (power != "" ) {
22. var powVer = Math.pow(10, power);
23. alert( "10的" + power + "次方[" + powVer + "]" );
24. resultValue = resultValue * powVer;
25. }
26. }
27. $( 'afterCountTest' ).value=resultValue;
28. }
29.}
/**
* 科学计数法的转换
* @author wyc
*/
function convertNUM(beforeCountTest) {
//转换之前的科学计数法表示
var tempValue = beforeCountTest.value;
var tempValueStr = new String(tempValue);
if ((tempValueStr.indexOf( 'E' ) != -1) || (tempValueStr.indexOf( 'e' ) != -1)){
alert(tempValueStr + '是科学计数法表示!' );
var regExp = new RegExp( '^((//d+.?//d+)[Ee]{1}(//d+))$', 'ig' );
var result = regExp.exec(tempValue);
var resultValue = "" ;
var power = "" ;
if (result != null ){
resultValue = result[2];
power = result[3];
result = regExp.exec(tempValueStr);
}
if (resultValue != "" ) {
if (power != "" ) {
var powVer = Math.pow(10, power);
alert( "10的" + power + "次方[" + powVer + "]" );
resultValue = resultValue * powVer;
}
}
$( 'afterCountTest' ).value=resultValue;
}
}
--------------------------------------------------------------------------------
·注意:在构建RegExp时必须有g标记,当有g标记的时,exec方法执行一次以后,会自动将RegExp的一个特殊属性lastIndex置为此次匹配的字符串的最后一个字母的下一个位置,当再次执行的时候,会在lastIndex位置开始查找,而不是 0 位置开始查找。如果exec没有找到匹配的字符串,它将自动将lastIndex置为 0。这个特殊的方法,可以很方便的循环遍历整个字符串,以找到所有匹配的子字符串..