Javascript 如何匹配小写字母和标点符号的选择?

Javascript 如何匹配小写字母和标点符号的选择?,javascript,regex,Javascript,Regex,期望的行为 我有一个输入字段(表单的文本区域),我想在其中允许以下字符: 小写字母 单一空间 单逗号 单撇号 单破折号 基本上,只允许人们在上述限制范围内自由键入文本 实际行为 我创建的模式根本不捕捉已定义的标点符号,或者不捕捉所需的标点符号: 逗号不匹配 单撇号是匹配的,但多撇号也是匹配的 破折号不匹配 我尝试过的 我利用了以下资源: 提出: 图案 var模式=/^[a-z]+([a-z,'-]+)*$/gm; 测验 测试代码 //定义一个测试数组 var array_of_t

期望的行为

我有一个输入字段(表单的文本区域),我想在其中允许以下字符:

  • 小写字母
  • 单一空间
  • 单逗号
  • 单撇号
  • 单破折号
基本上,只允许人们在上述限制范围内自由键入文本

实际行为

我创建的模式根本不捕捉已定义的标点符号,或者不捕捉所需的标点符号:

  • 逗号不匹配
  • 单撇号是匹配的,但多撇号也是匹配的
  • 破折号不匹配
我尝试过的

我利用了以下资源:



提出:

图案

var模式=/^[a-z]+([a-z,'-]+)*$/gm;
测验

测试代码

//定义一个测试数组
var array_of_tests=[“你好”、“什么”、“你好”、“你好吗?”、“hi5”、“8ask”、“yyyy.”、“!dff”、“无特殊字符”、“54445566”、“你好”、“你好”、“你好”、“你怎么样”、“人的事”、“人的事”、“你好”、“你怎么样”、“你好吗”];
//定义模式
var模式=/^[a-z]+([a-z,'-]+)*$/gm;
//迭代测试数组
for(设t=0;t
问题

除了实现所需的行为外,我还想知道:

有没有一种简单的方法可以从正则表达式中添加和删除所需的标点符号?

要在小写单词之间使用一个相同的分隔符,可以使用此正则表达式:

/^(?!.*([ ,'-])\1)[a-z]+(?:[ ,'-]+[a-z]+)*$/gm


负前瞻
(?!.*([,'-])\1)
如果输入连续重复相同的分隔符,则匹配将失败。

谢谢,它不匹配
如何,你是
-逗号后跟空格将是逗号的常见用法,我认为,编辑:这同样适用于单词之间的
破折号,ie破折号前后各有一个空格。好的,您想在单词之间允许两个不同的分隔符吗?您能在您提供的所有示例中标记所有有效和无效的匹配项吗?对不起,忘了这样做,现在将这样做已将有效和无效添加到OP。
/^(?!.*([ ,'-])\1)[a-z]+(?:[ ,'-]+[a-z]+)*$/gm