将字符串拆分两个字符

时间:2011-01-09 16:36:35

标签: javascript regex

Firstable如果字符串具有以下格式,我想匹配:$abc #xyz$abc .xyz

  

abc xyz 仅表示字母数字字符串。

如果它匹配,那么我需要提取第一个$abc和最后一个#xyz,所有这些都使用纯javascript和正则表达式。

模式按以下顺序排列:

  1. 美元符号
  2. 无限制的字母数字字符串
  3. 空间
  4. 哈希或点
  5. 无限制的字母数字字符串
  6. 提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

尝试以下正则表达式:

/^(\$[a-zA-Z\d]+) ([#.][a-zA-Z\d]+)$/

说明:

^              Start of line.
(              Start capturing group.
\$             Literal dollar sign.
[a-zA-Z\d]     Any letter in a-z or A-Z, or any digit.
+              One or more of the previous.
)              End capturing group.
<space>        Literal space.
(              Start second capturing group.
[#.]           Either a number sign or a period.
[a-zA-Z\d]+ 
)              End second capturing group.
$              End of line.

使用示例:

> var s = '$abc #xyz';
> s.match(/^(\$[a-zA-Z\d]+) ([#.][a-zA-Z\d]+)$/);
["$abc #xyz", "$abc", "#xyz"]

答案 1 :(得分:2)

喜欢这个吗?

if(str.match(/^\$[a-z0-9]+ (#|\.)[a-z0-9]+$/i)) {
    var parts = str.split(' ');
}

更新:显然有各种方法可以实现这一目标。没有一个正则表达式。如果您使用捕获组,则可以在一个步骤(like Mark showed in his answer)中提取字符串。