【发布时间】:2014-05-07 00:23:54
【问题描述】:
我正在寻找一种简单、快速的方法来查找字符串中最后一个非下划线的单词字符(即数字或字母)的索引.
示例:
lastCharacterIndex("hello world!");
=> 10
【问题讨论】:
-
你可以将字符串的字符从头到尾循环,并检查它的ASCII码是数字还是字母
标签: javascript regex
我正在寻找一种简单、快速的方法来查找字符串中最后一个非下划线的单词字符(即数字或字母)的索引.
示例:
lastCharacterIndex("hello world!");
=> 10
【问题讨论】:
标签: javascript regex
使用RegExp.lastIndex:
s = "hello world!";
re = /[a-z0-9](?=\W*$)/gi; // global flag is important
re.exec(s);
index = re.lastIndex-1; // 10
【讨论】:
function lastCharacterIndex(str){
var m = str.match(/\w[^\w]*$/);
return null===m ? -1 : str.lastIndexOf(m[0]);
}
【讨论】:
您可以搜索仅后跟非字母非数字的字母或数字,并获取匹配项的索引(如果有匹配项)。
var s = "hello world!";
var re = /[a-z\d][\W_]*$/i;
var match = re.exec(s);
var index = match ? match.index : -1;
alert(index); // 10
JS中RegExp的匹配是一个Array,但它有两个额外的非整数属性:“index”和“input”。
【讨论】:
不确定它的索引,但最后一个字母应该是最后一个
使用此匹配 0 的字符
[\S\s]*[^\W_]
【讨论】: