Javascript 以数字开头但仅以一个';结尾的字符串的正则表达式-';还有一个字母表
我正在尝试编写一个正则表达式模式检查,以检查我的字符串是否以数字开头,是否仅以“-”和一个字母结尾。应该通过的正则表达式的相同部分是Javascript 以数字开头但仅以一个';结尾的字符串的正则表达式-';还有一个字母表,javascript,regex,Javascript,Regex,我正在尝试编写一个正则表达式模式检查,以检查我的字符串是否以数字开头,是否仅以“-”和一个字母结尾。应该通过的正则表达式的相同部分是1234-M 我是怎么写的?我写了这个,但它允许在末尾有多个字母,并且没有添加“-” “^\d*(?:?[A-Za-z]{1,1})*$” 感谢您的帮助也许这就是您的意思 ^\d+-[A-Za-z]$ 主要更正如下: 您总是希望在开头至少有一个数字,因此请使用\d+而不是\d*。后者可以匹配0个数字 你写的是下划线而不是连字符,打字错误 {1,1}是不必要的 *
1234-M
我是怎么写的?我写了这个,但它允许在末尾有多个字母,并且没有添加“-”
“^\d*(?:?[A-Za-z]{1,1})*$”
感谢您的帮助也许这就是您的意思
^\d+-[A-Za-z]$
主要更正如下:
- 您总是希望在开头至少有一个数字,因此请使用
而不是\d+
。后者可以匹配0个数字\d*
- 你写的是下划线而不是连字符,打字错误
是不必要的{1,1}
结尾处表示结尾处可以有0个或更多字母。你只需要一个字母,所以你应该删除它*
- 因此,不需要非捕获组
请张贴完整的相关代码。是否要验证字符串?是实时输入验证吗?重新格式化字符串?你说你想匹配
-
,为什么模式中有
<代码>*匹配0个或多个匹配项,因此(?:?[A-Za-z])*
匹配ASGHFdfgthh
字符串。如果您需要1个
和1个字母,请使用(?:[a-zA-Z])?
而不是(?:[a-zA-Z]{1,1})*
。同样的量词问题可能存在于\d*
,您可能需要\d+
。由于它是一个字符串文字,您应该将反斜杠加倍,或者使用正则表达式文字:/^\d+(?:[a-Za-z])?$/
您是否尝试过^\d+-[a-Za-z]$
?@Bohemian是的,但不起作用如果您解释了您正在做的事情,您会得到更好、更快的帮助。@kingsley如果它不起作用,你为什么用相同的正则表达式接受答案?它怎么不起作用?@KingsleySimon你能描述一下它怎么不起作用吗?哪些字符串应该匹配但不匹配?什么字符串匹配但不应该匹配?