正则表达式在逗号之前匹配空格但不在之后

时间:2014-07-17 14:55:52

标签: html regex text

我希望有一个正则表达式,不允许使用逗号之后的空格,但应允许逗号之前的空格。 逗号也应该是可选的。

我当前的正则表达式:

^[\w,]+$

我尝试在其中添加\s并尝试^[\w ,]+$,但这也允许逗号之后的空格!

这应该是测试用例:

Hello World // true
Hello, World // false (space after comma)
Hello,World // true
Hello,World World // false

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:6)

以下正则表达式在逗号后不允许空格

^[\w ]+(?:,[^ ]+)?$

DEMO

<强>解释

  • ^开始一行。
  • [\w ]匹配一个字符字符或空格一次或多次。
  • (?:)这称为非捕获组。这个组内的任何东西都不会被捕获。
  • (?:,[^ ]+)?逗号后跟任何不是空格的字符一次或多次。通过在非捕获组之后添加?,这会告诉正则表达式引擎它是可选的。
  • $行尾

答案 1 :(得分:1)

您可以使用此正则表达式。

^[\w ]+(?:,\S+)?$

<强>解释

^          # the beginning of the string
[\w ]+     # any character of: word characters, ' ' (1 or more times)
(?:        # group, but do not capture (optional):
  ,        #   ','
  \S+      #   non-whitespace (all but \n, \r, \t, \f, and " ") (1 or more times)
)?         # end of grouping
$          # before an optional \n, and the end of the string

答案 2 :(得分:1)

我想这取决于你想要做什么,如果你只是测试语法错误的存在,你可以使用类似的东西。

See this example here >

var patt = / ,/g; // or /\s,/g if you want
var str = 'Hello ,World ,World';
var str2 = 'Hello, World, World';
console.log( patt.test(str) ) // True, there are space before commas
console.log( patt.test(str2) ) // False, the string is OK!

前瞻是有用的,但如果不了解基础知识就很难理解。

Use this site,它非常适合可视化您的正则表达式