仅用于数字标签的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
匹配。