Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用regex对象进行Javascript字符串验证_Javascript_Regex_Validation - Fatal编程技术网

使用regex对象进行Javascript字符串验证

使用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

我对正则表达式和Javascript完全是新手。我有以下问题:需要检查文本字段中是否存在一(1)个或多(n)个连续的
*
(星号)字符,例如
*
***
***
或无限(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你完全正确,我会编辑我的正则表达式。谢谢