我有一个字符串userName
,看起来像这样:
var userName = "CityOfLiverpool-----joesmith";
var userName = "Hull----------------janesmith";
userName
的第一部分是帐户:"CityOfLiverpool"
userName
的第二部分是用户:"joesmith"
帐户最多不超过20个字符,并使用连字符填充到右侧。
如何提取帐户和用户?
答案 0 :(得分:3)
将带有捕获组的正则表达式用于由连字符分隔的两个部分。
var match = userName.match(/^([^-]+)-+(.*)$/);
var firstName = match[1];
var lastName = match[2];
答案 1 :(得分:2)
一种简单的方法:
var parts = userName.split('-');
var firstPart = parts[0];
var lastPart = parts[parts.length - 1];
答案 2 :(得分:2)
您可以使用regular expression
提取帐户和用户userName.match(/^([^-]{1,20})-*(.*)$/)
^
匹配字符串的开头,$
匹配结尾。 [^-]
匹配任何不是连字符的字符,[^-]{1,20}
匹配1到20个此类字符之间的任何字符。 -*
匹配零个或多个连字符。 .*
匹配零个或多个任何类型的字符。
整个正则表达式分解如下:
^ start of string
([^-]{1,20}) 1 to 20 characters, each of which is not a hyphen
-* zero or more hyphens
(.*) zero or more characters of any kind
$ end of string
完成后
match = userName.match(/^([^-]{1,20})-*(.*)$/)
您可以将第一个带括号的组查找为match[1]
,将第二个带括号的组查找为match[2]
。
var userName = "Hull----------------janesmith";
var match = userName.match(/^([^-]{1,20})-*(.*)$/),
account = match[1],
user = match[2];
document.write('account = "'+account+'"<br />user = "'+user+'"');
&#13;
答案 3 :(得分:0)
如果用户名包含连字符或帐户长度为20个字符,则某些解决方案将无效。 这是一个替代方案,基于帐户总是20个字符的事实:
var account = userName.substr(0,20).replace(/-+$/, "");
var name = userName.substr(20, userName.length-20);