仅用于数字标签的Javascript正则表达式

仅用于数字标签的Javascript正则表达式,javascript,regex,Javascript,Regex,我想匹配这种标签模式#1,#4321,#1000,而不是: #01(带前导零) #1aa(按字母顺序排列) 但数字后面的逗号、句号、冒号等特殊字符也可以,例如#1.。把它想象成句子或短语末尾的标签。基本上把它们当作空白 基本上只有#和一个数字 我下面的代码不符合要求,因为它需要前导零,并且在结尾有一个难看的空格。虽然我总是可以调整结果,但我觉得这不是正确的方法 reg = new RegExp(/#[0-9]+ /g); var result; while((result = reg.

我想匹配这种标签模式
#1
#4321
#1000
,而不是:

  • #01
    (带前导零)

  • #1aa
    (按字母顺序排列)

但数字后面的逗号、句号、冒号等特殊字符也可以,例如
#1.
。把它想象成句子或短语末尾的标签。基本上把它们当作空白

基本上只有
#
和一个数字

我下面的代码不符合要求,因为它需要前导零,并且在结尾有一个难看的空格。虽然我总是可以调整结果,但我觉得这不是正确的方法

reg = new RegExp(/#[0-9]+ /g);   
var result;
while((result = reg.exec("hyha #12  gfdg #01 aa #2e #1. #101")) !== null) {
    alert("\"" + result + "\"");
}

那里的字符串应该正好匹配
#12
#1
#101


请帮助推荐比我更好的正则表达式字符串。谢谢。

您可以使用如下正则表达式:

#[1-9]\d*\b
代码示例:

var re = /#[1-9]\d*\b/g;
var str = "#1 hyha #12 #0123 #5 gfdg #2e ";
var matches = str.match(re); // = ["#1", "#12", "#5"]

您可以使用以下正则表达式:

#[1-9]\d*\b
代码示例:

var re = /#[1-9]\d*\b/g;
var str = "#1 hyha #12 #0123 #5 gfdg #2e ";
var matches = str.match(re); // = ["#1", "#12", "#5"]

您可以使用以下正则表达式:

#[1-9]\d*\b
代码示例:

var re = /#[1-9]\d*\b/g;
var str = "#1 hyha #12 #0123 #5 gfdg #2e ";
var matches = str.match(re); // = ["#1", "#12", "#5"]

您可以使用以下正则表达式:

#[1-9]\d*\b
代码示例:

var re = /#[1-9]\d*\b/g;
var str = "#1 hyha #12 #0123 #5 gfdg #2e ";
var matches = str.match(re); // = ["#1", "#12", "#5"]
这应该行得通

reg = /(#[1-9]\d*)(?: |\z)/g;   
请注意,用于散列和数字的捕获组
(…)
,以及非捕获组
(?:…)
,仅当数字后面有空格或字符串结尾时,才与数字匹配。如果您不想在
#1.
中捕获类似
#1
的字符串,请使用此选项。否则,另一个答案更好

然后,您必须通过如下迭代从匹配中获取捕获的组:

myString = 'hyha #12  gfdg #01 aa #2e #1. #101';
match = reg.exec(myString);
alert(match[1]);
编辑

无论何时使用regexp,都应该使用某种工具。例如,对于桌面,您可以使用regex coach

例如:

这应该有效

reg = /(#[1-9]\d*)(?: |\z)/g;   
请注意,用于散列和数字的捕获组
(…)
,以及非捕获组
(?:…)
,仅当数字后面有空格或字符串结尾时,才与数字匹配。如果您不想在
#1.
中捕获类似
#1
的字符串,请使用此选项。否则,另一个答案更好

然后,您必须通过如下迭代从匹配中获取捕获的组:

myString = 'hyha #12  gfdg #01 aa #2e #1. #101';
match = reg.exec(myString);
alert(match[1]);
编辑

无论何时使用regexp,都应该使用某种工具。例如,对于桌面,您可以使用regex coach

例如:

这应该有效

reg = /(#[1-9]\d*)(?: |\z)/g;   
请注意,用于散列和数字的捕获组
(…)
,以及非捕获组
(?:…)
,仅当数字后面有空格或字符串结尾时,才与数字匹配。如果您不想在
#1.
中捕获类似
#1
的字符串,请使用此选项。否则,另一个答案更好

然后,您必须通过如下迭代从匹配中获取捕获的组:

myString = 'hyha #12  gfdg #01 aa #2e #1. #101';
match = reg.exec(myString);
alert(match[1]);
编辑

无论何时使用regexp,都应该使用某种工具。例如,对于桌面,您可以使用regex coach

例如:

这应该有效

reg = /(#[1-9]\d*)(?: |\z)/g;   
请注意,用于散列和数字的捕获组
(…)
,以及非捕获组
(?:…)
,仅当数字后面有空格或字符串结尾时,才与数字匹配。如果您不想在
#1.
中捕获类似
#1
的字符串,请使用此选项。否则,另一个答案更好

然后,您必须通过如下迭代从匹配中获取捕获的组:

myString = 'hyha #12  gfdg #01 aa #2e #1. #101';
match = reg.exec(myString);
alert(match[1]);
编辑

无论何时使用regexp,都应该使用某种工具。例如,对于桌面,您可以使用regex coach


例如:

NB:
new RegExp
是冗余的,适用于包含RegExp的字符串时-因为您已经有了RegExp文本,所以只需使用
reg=//g
NB:
new RegExp
是冗余的,适用于包含RegExp的字符串时-因为您已经有了RegExp文本,所以只需使用
reg=//g
NB:
new RegExp
是冗余的,适用于包含RegExp的字符串时-因为您已经有了RegExp文本,所以只需使用
reg=//g
NB:
new RegExp
是冗余的,适用于包含RegExp的字符串时-因为您已经有了RegExp文本,所以只需使用
reg=//g
这不是和
\d+\b
一样吗?@Butt4cak3,不是。你的建议将与OP不想要的
\0123
匹配。这与
\d+\b
不一样吗?@Butt4cak3,不是。你的建议将与OP不想要的
\0123
匹配。这与
\d+\b
不一样吗?@Butt4cak3,不是。你的建议将与OP不想要的
\0123
匹配。这与
\d+\b
不一样吗?@Butt4cak3,不是。您的建议将与OP不希望的
#0123
匹配。