我想拉的名字“戴维”的中间(但将取决于谁是记录在不同的)了以下字符串:JavaScript的正则表达式来查找单词串
登录:戴夫 - example.com
有关在JS中使用正则表达式的最佳方法的任何想法?
我想拉的名字“戴维”的中间(但将取决于谁是记录在不同的)了以下字符串:JavaScript的正则表达式来查找单词串
登录:戴夫 - example.com
有关在JS中使用正则表达式的最佳方法的任何想法?
我不知道你是怎么有事情究竟,安装,但这应该工作:
// This is our RegEx pattern.
var user_pattern = /Logged In: ([a-z]+) - example\.com/i
// This is the logged in string we'll be matching the pattern against
var logged_in_string = "Logged In: Dave - example.com"
// Now we attempt the actual match. If successful, user[1] will be the user's name.
var user = logged_in_string.match(user_pattern)
我的例子是懒惰,只有AZ之间包含字母,因为我不知道的一个名称相匹配您的用户名参数。您可以根据您的需求查找其他RegEx模式。
希望这会有所帮助!
分在结肠处裂开了空间,并采取数组中的第二个项目,如:
var thestring = "Logged In: Dave - example.com";
thestring = thestring.split(":");
thestring = thestring[1].split(" ");
thename = thestring[1]
或者,如果名称可以包含空格:
var thestring = "Logged In: Dave - example.com";
thestring = thestring.split(":");
thestring = thestring[1].split("-");
var x = thestring[0].length;
if (x > 4) {
var thename = thestring[0].replace(" ", "");
}
else {
thestring = thestring[0].split(" ");
thestring = thestring.split(" ");
thename = thestring[1] + " " + thestring[3];
}
如果该名称恰好包含空格,将会中断。 – cHao 2010-10-05 20:41:25
你不”真的需要一个正则表达式。你可以取a .slice()
of这个字符串,得到:
和-
using .indexOf()
的位置。
实施例:http://jsfiddle.net/mkUzv/1/
var str = "Logged In: Dave - example.com";
var name = str.slice(str.indexOf(': ') + 2, str.indexOf(' -'));
编辑:如@cHao,+ 2
指出应该在为了消除:
后的空间被使用。固定。
那会是+2而不是+1吗?该空间不应该是名称的一部分... – cHao 2010-10-05 20:44:52
@cHao - 非常好的一点。我会更新。谢谢。 :o) – user113716 2010-10-05 20:45:42
为了论证的缘故,使用正则表达式的好处可能在于,它允许将待提取文本嵌入的“逻辑”与嵌入式Javascript代码分开。因此,如果出于某种原因该“登录”字符串发生了变化,您所要做的就是修复正则表达式,并且使用它的代码可能(可能)保持不变。不过,我同意这可能是矫枉过正。 – Pointy 2010-10-05 20:47:15
这工作得很好!谢了哥们。 – dave 2010-10-05 20:52:58