使用正则表达式查找长度为10的字符串

时间:2009-09-15 13:13:56

标签: regex

我想使用正则表达式来查找长度正好为10个字符且以“7”开头的字符串。请有人能告诉我怎么做?

11 个答案:

答案 0 :(得分:13)

这应该有效:

^7.{9}$

7匹配字符'7'。的。匹配任何角色。 {9}告诉它与前一个符号匹配9次。

编辑:^匹配字符串的开头,$匹配字符串的结尾。

答案 1 :(得分:8)

"7.{9}"的所有这些答案是什么?他们将匹配“7abc efghi”之类的东西,这显然是两个字符串(在我看来,基于问题的基调)。它们也会匹配“7999999999999999999999999999”(根据问题显然是错误的),除非你明确表示你正在使用具有隐式起点/终点线边界的RE函数。

你可能需要的是一个可能出现字符串的白名单,如:

7[A-Za-z0-9]{9}

两边都有(可能)字边界,或者(对于没有该功能的旧RE引擎),所有这些:

[^A-Za-z0-9]7[A-Za-z0-9]{9}[^A-Za-z0-9]
^7[A-Za-z0-9]{9}[^A-Za-z0-9]
[^A-Za-z0-9]7[A-Za-z0-9]{9}$
^7[A-Za-z0-9]{9}$

如果更多字符被认为是“字符串”的一部分,只需将它们添加到"[A-Za-z0-9]"部分即可。

答案 2 :(得分:4)

此模式应该有效:7.{9}

7”显然会匹配数字“7”。 “.”将匹配任何字符,“{9}”将匹配前一个字符或组(在本例中为“.”)9次。

花一些时间学习正则表达式会很有帮助 - 您可以查看this articlethis "cheat sheet",以帮助您了解它们的工作原理。像RegexBuddyRegular Expression Builder这样的工具(我个人最喜欢的 - 简单而强大)也可以提供很大的帮助。

答案 3 :(得分:3)

这样的事情可能是:

(^|\n)(7\S{9})\s.*

其中(^ | \ n)是字符串的开头(bof或新行),(7 \ S {9})是我们想要的字符串,\ S是任何非空白字符,\ s是任何空格,而。*表示我们不想要的任何其他内容。

答案 4 :(得分:3)

要查找长度恰好为10个字符的字符串(不是单词):

^7\S{9}$
^ - begin of the string
7 - string must start with 7
\S{9} - 9 characters (use .{9} if you wish to allow any symbol in string including whitespaces)
$ - end of the string

如果是家庭作业,我建议您使用Regex Builder来测试您对正则表达式的了解。

答案 5 :(得分:3)

就我而言,嵌入式空格不是问题,请使用锚定来确保字符串不会太长

^7.{9}$

答案 6 :(得分:2)

“以7开头” - 你的意思是从数字7开始吗?

无论如何,要匹配一个长度恰好为10个字符的字符串:

/[a-z0-9]{10}/i

这将匹配由字母和数字组成的任何字符串。添加额外的字符以便匹配很容易,但是因为你没有指定...

祝你好运

答案 7 :(得分:2)

就像Pax所说,如果你想匹配一个与任何空格不匹配的字符串,那就是:

// match this:
715kdgbp94

// not this
7 539 136a

那么你可以使用这个正则表达式:

7\S{9}

同样值得指出的是,这并不是正则表达式的一个很好的用法,并且你正在使用的任何语言都可能存在一些相当标准且更容易理解的方法。例如,在PHP中:

if (strlen($myString) == 10 && $myString[0] == "7")) {

或Javascript:

if (myString.length == 10 && substr(myString, 0, 1) == "7") {

答案 8 :(得分:0)

7.{9} 是的,可能不是你想要的,但是你提供了什么信息,这正是你所要求的。

答案 9 :(得分:0)

这将匹配任何以7开头不超过10位的数字。

\b7\d{0,9}\b

答案 10 :(得分:0)

\b7\w{9}\b

与“以'7'开头并且独立存在的连续系列单词字符”相同。

(?<=^7|\s)7\w{9}(?=$|\s)

与“以'7'开头且以白色空格括起来的连续字词系列”相同。

后者暗示显然支持后视和前瞻。