使用regex对象进行Javascript字符串验证
我对正则表达式和Javascript完全是新手。我有以下问题:需要检查文本字段中是否存在一(1)个或多(n)个连续的使用regex对象进行Javascript字符串验证,javascript,regex,validation,Javascript,Regex,Validation,我对正则表达式和Javascript完全是新手。我有以下问题:需要检查文本字段中是否存在一(1)个或多(n)个连续的*(星号)字符,例如*或***或***或无限(n)*。允许使用字符串,例如*番茄或番茄*或**番茄或番茄**或作为多(n)*番茄多(n)*。到目前为止,我尝试了以下方法: var str = 'a string' var value = encodeURIComponent(str); var reg = /([^\s]\*)|(\*[^\s])/; if (reg.test(v
*
(星号)字符,例如*
或***
或***
或无限(n)*
。允许使用字符串,例如*番茄
或番茄*
或**番茄
或番茄**
或作为多(n)*番茄多(n)*
。到目前为止,我尝试了以下方法:
var str = 'a string'
var value = encodeURIComponent(str);
var reg = /([^\s]\*)|(\*[^\s])/;
if (reg.test(value) == true ) {
alert ('Watch out your asterisks!!!')
}
如果我理解正确,您正在寻找这样的模式:
var pattern = /\**[^\s*]+\**/;
这不会匹配像******
或******
这样的字符串,但会匹配****d****d
或您所说的所有有效示例(****tomatos
等)。如果我误解了,请告诉我,我会看看我能做些什么来帮助您。PS:我们开始都是新手,没什么好羞愧的,更不用说道歉了:) 编辑您的问题后,我收集到需要在输入的开头或结尾使用星号,但字符串还必须包含至少1个其他字符,因此我建议以下解决方案:
var pattern = /^\*+[^\s*]+|[^\s*]+\*+$/;
'****'.match(pattern);//false
' ***tomato**'.match(pattern);//true
但是,如果不允许使用*番茄*
,则必须将正则表达式更改为:
var pattern = /^\*+[^\s*]+$|^[^\s*]+\*+$/;
这是一个方便的网站,可以帮助你在正则表达式的神奇世界中找到自己的路。通过你的问题,很难理解你想要的是什么。。。但让我试试: 只允许在开始或结束时使用星号 如果只允许在开头或结尾(但不允许在两侧)使用任意数量(至少一个)的星号,如:
******番茄
番茄******
- 但不是
**番茄******
reg = /^(?:\*+[^*]+|[^*]+\*+)$/;
reg = /^(\*+)[^*]+\1$/;
匹配前面和后面的星号
如果您要求开始处的星号数与结尾处的星号数匹配,如
******番茄******
*番茄*
- 但不是
**番茄******
reg = /^(?:\*+[^*]+|[^*]+\*+)$/;
reg = /^(\*+)[^*]+\1$/;
结果?
你的问题不清楚当这些正则表达式匹配时,结果应该是什么?对上述正则表达式测试为正的字符串是好是坏取决于您和您的要求。只要您有正确的正则表达式,就可以继续提供所需的功能
我还编写了正则表达式来排除字符串中的星号。如果还需要拒绝空格或其他任何内容,只需调整上述表达式的[^…]
部分即可
注意:这两个正则表达式都未经测试,但应该可以让您开始构建代码中实际需要的正则表达式
你的问题不是很清楚。。。您是否在前缀/后缀星号后面,以便开头和结尾的数字匹配?所以这个数字可以是任何给定的数字,只要开头和结尾有相同数量的星号?你能再定义一点预期的行为吗?如果我有一个
*
在世界的任何地方,它是否应该触发警报?或者只在字符串的开头和/或结尾?一旦有了匹配项,您将如何处理它们?它们是强制性的吗?“字符串”是整个textarea
,还是text-输入值?还是应该逐字检查?根据您的条件,看起来您正在匹配任何包含星号的字符串。在这种情况下,你可以简化正则表达式。@DarkXphenomenon:他的正则表达式肯定不是他所需要的,因此问题就来了。你不需要在一个集合中转义字符吗?那么您的集合可以替换为[^*]
?只是一个建议。不要说你的正则表达式有什么问题。@RobertKoritnik你完全正确,我会编辑我的正则表达式。谢谢