Javascript Regex 1-10

时间:2017-06-08 18:10:38

标签: javascript regex

我正试图获得一个可以从1-10获得的正则表达式而且我遇到了麻烦

我试过了:

/^[1-9]|10$/ //this will matches out 1-9 but not 10
/^10|[1-9]$/ //this will matches 10 but no 1-9 digits

我觉得很奇怪,因为我以前见过这个问题,人们说这些表达中的任何一个都应该有用。从1-10开始获得#的另一种方式的想法?

2 个答案:

答案 0 :(得分:1)

假设您要匹配包含数字1-10的字符串而不是其他内容,则表示您与/^[1-9]|10$/关系密切。这里的问题是交替|包含^$个字符,即此表达式将与^[1-9]匹配(任何以1-9 {{1}开头的字符串10 $`(任何以10结尾的字符串)。圆括号解决这个问题:

) or

请参阅下面的操作:



/^([1-9]|10)$/

const regex = /^([1-9]|10)$/gm; // `gm` flags for demo only; read below
const str = `1
2
3
4
foo
5
6
7
8
9
10`;

let m;
while (m = regex.exec(str)) {
  console.log('Found match:', m[0]);
}




该代码段使用.as-console-wrapper{min-height:100%}g标记来查找多行的所有匹配项。 m使m^匹配每行的开头和结尾,而不是字符串的开头和结尾。对于您的用例,您可能不想要任何标记。

答案 1 :(得分:0)

在不知道具体用例的情况下,我没有理由将^和&这里,要求数字由行的起点和终点包围。即使你的内部正则表达式是正确的,它也不会匹配' 6'在:'我有一个6岁的儿子。'

相反,用\ b(单词边界)包围内部正则表达式。因此,使用Jordan的例子,\ b([1-9] | 10)\ b将匹配1-10中的所有数字。要在javascript中使用正则表达式,您需要使用几个接受它作为参数的函数之一,或者可以在其上调用的方法:



let regex = /\b([1-9]|10)\b/;

console.log('I have a 6 year old son.'.match(regex)[0]);
console.log('I have a six year old son.'.match(regex));

console.log('I have a 6 year old son.'.replace(regex, 'six'));

console.log(regex.test('I have a 6 year old son.'));
console.log(regex.test('I have a six year old son.'));