Firstable如果字符串具有以下格式,我想匹配:$abc #xyz
或$abc .xyz
。
abc 和 xyz 仅表示字母数字字符串。
如果它匹配,那么我需要提取第一个$abc
和最后一个#xyz
,所有这些都使用纯javascript和正则表达式。
模式按以下顺序排列:
提前感谢您的帮助。
答案 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)中提取字符串。