使用正则表达式对象进行Javascript字符串验证

Javascript string validation using the regex object

本文关键字:Javascript 字符串 验证 正则表达式 对象      更新时间:2024-05-16

我是regex和Javascript的新手。我有以下问题:需要在文本字段中检查是否存在一(1)个或多(n)个连续的*(星号)字符,例如******或无限(n)*。允许的字符串,例如*tomatotomato***tomatotomato**或作为many(n)*tomato many(n)*。到目前为止,我已经尝试了以下几种:

var str = 'a string'
var value = encodeURIComponent(str);
var reg = /([^'s]'*)|('*[^'s])/;
if (reg.test(value) == true ) {
    alert ('Watch out your asterisks!!!')
}

根据你的问题,很难解读你想要的是什么。。。但让我试试:

只允许在开头或结尾使用星号

如果你只允许在开头或结尾(但不允许两边)有任意数量(至少一个)的星号,比如:

  • *****tomato
  • tomato******
  • 但不是**tomato*****

然后使用以下正则表达式:

reg = /^(?:'*+[^*]+|[^*]+'*+)$/;

匹配前面和后面的星号数量

如果你要求大局的星号数量与一样末尾的星号数量相匹配

  • *****tomato*****
  • *tomato*
  • 但不是**tomato*****

然后使用这个正则表达式:

reg = /^('*+)[^*]+'1$/;

结果

从你的问题中还不清楚,当这些正则表达式中的每一个匹配时,结果应该是什么?对以上正则表达式测试为阳性的字符串是好是错取决于您和您的需求。只要你有正确的正则表达式,你就可以去提供你需要的功能。

我还编写了正则表达式来排除字符串中的星号。如果您还需要拒绝空格或其他任何内容,只需调整上面表达式的[^...]部分。

注意:这两个正则表达式都未经测试,但应该可以让您开始构建代码中实际需要的正则表达式

如果我理解正确,你正在寻找这样的模式:

var pattern = /'**[^'s*]+'**/;

这不会匹配像******* ***这样的字符串,但会匹配***d*** *d或您认为有效的所有示例(***tomatos等)
如果我误解了,请告诉我,我会尽力帮助你的。附言:在某个时候,我们都是新手,没有什么可羞愧的,更不用说为之道歉了:)

编辑完您的问题后,我收集到需要在输入的开头或结尾使用星号,但字符串还必须包含至少1个其他字符,因此我提出以下解决方案:

var pattern = /^'*+[^'s*]+|[^'s*]+'*+$/;
'****'.match(pattern);//false
' ***tomato**'.match(pattern);//true

但是,如果不允许*tomato*,则必须将正则表达式更改为:

var pattern = /^'*+[^'s*]+$|^[^'s*]+'*+$/;

这里有一个方便的网站,可以帮助你在正则表达式的神奇世界中找到自己的路。