如何在最后一个char(。; + _等)之后获取值: e.g。
string.name + org.com
我想得到“com”。 jQuery中有任何函数吗?
答案 0 :(得分:8)
使用lastIndexOf
和substr
查找字符并获取字符串后面的部分:
var extension = name.substr(name.lastIndexOf(".") + 1);
答案 1 :(得分:4)
不是jQuery,只是JavaScript: (不是因为更新表明多个字符)。正如具有捕获组的正则表达式一样,该捕获组包含字符类,后跟字符串结尾锚点,例如lastIndexOf
和substring
会这样做/([^.;+_]+)$/
与RegExp#exec
或String#match
一起使用。
var match = /([^.;+_]+)$/.exec(theStringToTest),
result = match && match[1];
答案 2 :(得分:2)
从定义的集合中最后一次出现字符后获取子字符串的简单且可读的approch是拆分字符串,其中包含一个包含字符类的正则表达式,然后使用{{3}获取结果数组的最后一个元素:
pop()
方法从数组中删除最后一个元素并返回该元素。
请参阅下面的JS演示:
var s = 'string.name+org.com';
var result = s.split(/[.;+_]/).pop();
console.log(result);

默认情况下在正则表达式的所有非重叠事件中进行拆分。
注意:如果您需要匹配^
,]
,\
或-
,您可以将其转义并使用字符类(例如/[\^\-\]\\]/
)。可以避免转义^
(如果您在开场[
后没有将其放好),-
(如果它在开幕[
之后,就在之前)结束]
,在有效范围之后,或在速记字符类和另一个符号之间):/[-^\]\\]/
。
此外,如果您需要使用单个char进行拆分,则不需要正则表达式:
// Get the substring after the last dot
var result = 'string.name+org.com'.split('.').pop();
console.log(result);

答案 3 :(得分:1)
var s = "string.name+org.com",
lw = s.replace(/^.+[\W]/, '');
console.log(lw) /* com */
这也适用于
string.name +组织/ COM
string.name + org.info
答案 4 :(得分:1)
答案 5 :(得分:1)
我会投入一个疯狂的(即没有RegExp):
var s = 'string.name+org.com';
var a = s.split('.'); //puts all sub-Strings delimited by . into an Array
var result = a[a.length-1]; //gets the last element of that Array
alert(result);
编辑:由于问题的更新要求多个分隔符工作,这可能不是可行的方法。太疯狂 .....
答案 6 :(得分:0)
使用像
这样的javascript函数url.substr(url.length - 3);