Regex 正则表达式-仅匹配字母数字和单词之间的单个空格

Regex 正则表达式-仅匹配字母数字和单词之间的单个空格,regex,Regex,我不熟悉正则表达式。。。 有人问我一个正则表达式,它可以接受字母数字,多几个字符,单词之间只有一个空格 例如: 这应符合: "Hello world" 这不应该: "Hello world" 有什么想法吗 这是我的表情: [\w':''.'')''(''\[''\]''{''}''-''_']+$ 我已经试过了\s?(空格字符一次或永远不会-对吗?)但我没有让它工作。使用Oniguruma regex语法,您可以执行以下操作: ^[\w\.:\(\)\[\]{}\-_](?: ?[\w\

我不熟悉正则表达式。。。 有人问我一个正则表达式,它可以接受字母数字,多几个字符,单词之间只有一个空格

例如: 这应符合:

"Hello world"
这不应该:

"Hello  world"
有什么想法吗

这是我的表情:

[\w':''.'')''(''\[''\]''{''}''-''_']+$

我已经试过了\s?(空格字符一次或永远不会-对吗?)但我没有让它工作。

使用Oniguruma regex语法,您可以执行以下操作:

^[\w\.:\(\)\[\]{}\-_](?: ?[\w\.:\(\)\[\]{}\-_])*$
假设“其他字符”为:()[]{}-_

此正则表达式将匹配一个字符串,该字符串必须以单词字符或其他允许的字符开头和结尾,并且一行中不能有多个空格

如果使用的是
x
标志(忽略正则表达式中的空白),则需要执行以下操作:

^[\w\.:\(\)\[\]{}\-_](?:\ ?[\w\.:\(\)\[\]{}\-_])*$
唯一的区别是空格前面的
\

那么:

^[\w\.:\(\)\[\]{}\-]+( [\w\.:\(\)\[\]{}\-]+)*$
匹配项:

  • ^[\w\:\(\)\[\]{}-]+
    :行以1个或多个可接受的字符开头(下划线包含在\w中)
  • ([\w\:\(\)\[\]{}-]+)
    :查看是否包含单个分隔符和1个或多个可接受的字符
  • *$
    :重复单个分隔符和单词0或更多次
测试:

  • 你好(太空)世界
    :真
  • Hello(space)(space)World
    :FALSE
  • 你好
    :真
  • 你好(空格)
    :FALSE
  • Hello(tab)World
    :FALSE

我认为您编写的正则表达式的主要问题是您希望允许的字符周围的引号。这不是使用
\s时的问题?
可能是让您绊倒的原因。非常感谢!这就解决了我的问题!我只把“?”改成了“\s?”,效果很好:“^(?::\s?[\w\:()[[[{}-\u])+$”我用空格代替了
\s
,因为听起来你不想匹配制表符、换行符和其他各种各样的空格
\s
将匹配任何被视为空白的内容,而使用空格字符只会专门匹配空格。Emily,我想这是因为我使用的程序。我猜他们以不同的方式解释表达式……可能是使用了
x
标志,它忽略了正则表达式中的空白。我已经用
x
标志更新了答案。是的!就是这样!谢谢!很抱歉,我不能给你评分,上面说我还没有15分。Joel,你能告诉我你在哪里测试这个吗?:我正在Expresso和Rad软件正则表达式设计器上尝试。。。每个程序都有不同的结果:我相信它使用了java正则表达式引擎。这比Emily的正则表达式要有效得多。