[英]How to check if the start of a string has specific character using regex in javascript?
[英]Forcing specific character input using regex in javascript
我在Java脚本中使用正则表达式来验证全名字段。 我需要验证以接受1个或多个[az AZ]
字符的实例,并且该字段必须包含-
和空格字符。
我正在使用的当前正则表达式是:( ("^[a-zA-Z\\\\-\\\\\\s]*$");
这个正则表达式允许我想要的正确输入,但是,它不强迫用户插入空格和-我需要我的验证才能包括在内。 我是regex的新手,昨天才被介绍给他们,所以我不完全了解某些字符的正确用法。
我也不希望空格和-位于字段的开头或结尾而不是彼此相邻。
有效输入的示例:
John smi-th
dereK al-jamone
ro-binstanle y
我知道这种验证是不寻常的,但是我将非常感谢您提供的任何帮助,以使我能够更好地了解正则表达式。
请检查我是否正确理解您的要求:
az
, AZ
,空格(ASCII 32)中的一个或多个。 恰好一个-
-
不能在字符串的开头或结尾,但是必须有一个空格和一个连字符-
,因此字符串必须以字母字符开头和结尾。 -
空间不能彼此相邻。 我假设连续的空格和连续的-
也不允许。 对于上述要求,此正则表达式应验证字符串:
^(?!.*[- ]{2})(?=.* )[a-zA-Z][a-zA-Z ]*-[a-zA-Z ]*[a-zA-Z]$
简短说明:
(?!.*[- ]{2})
:断言连字符和空格不是彼此相邻,也不允许连续的空格和连字符。
(?=.* )
:检查字符串中至少有一个空格
[a-zA-Z][a-zA-Z ]*-[a-zA-Z ]*[a-zA-Z]
:根据我上面的分析,第一个和最后一个字符是字母字符( (不在字符串中的同一位置)-这将隐式禁止使用空格和连字符。 只能使用1个连字符,其余的可以是任意数量的字母和空格。
您还可以使用多个正则表达式来编写此代码-代码会更清晰一些:
// No hyphen and space at the beginning and the end. Exactly 1 hyphen.
// The string only contains alphabet, space and hyphen
/^[a-zA-Z][a-zA-Z ]*-[a-zA-Z ]*[a-zA-Z]$/.test(str) &&
// Hyphen and space cannot be directly next to each other
// Consecutive hyphens, or consecutive spaces are also disallowed
!/[- ]{2}/.test(str) &&
// At least one space in the string, can be replaced with indexOf
/ /.test(str)
这是你想要的吗?
^[A-Za-z\s]+(-(?!-)[A-Za-z\s]+)+$
如果您需要确保只能存在一个空格和一个连字符,那么我会选择检查两个不同的正则表达式,如果其中一个匹配,那么它是有效的...
连字符前的空格...
^[a-zA-Z]*\s.[a-zA-Z]*\-.[a-zA-Z]*$
连字符后的空格
^[a-zA-Z]*\-.[a-zA-Z]*\s.[a-zA-Z]*$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.