Regex 正则表达式不允许仅使用空格?
我有一个正则表达式,它只允许空格、字母和破折号。我想修改它,这样它就不会只允许空格了。有人能帮我吗Regex 正则表达式不允许仅使用空格?,regex,Regex,我有一个正则表达式,它只允许空格、字母和破折号。我想修改它,这样它就不会只允许空格了。有人能帮我吗 /^([A-zăâîșțĂÂÎȘȚ-\s])+$/ 您可以使用负前瞻来限制此通用模式: /^(?!\s+$)[A-Za-zăâîșțĂÂÎȘȚ\s-]+$/ ^^^^^^^^ 见 (?!\s+$)前瞻在最开始时执行一次,如果在字符串末尾有一个或多个空格,则返回false 此外,您的正则表达式包含一个经典版本的[a-z],它不仅匹配ASCII字母,还需要将其替换为[a-Za-z](或者仅[a
/^([A-zăâîșțĂÂÎȘȚ-\s])+$/
您可以使用负前瞻来限制此通用模式:
/^(?!\s+$)[A-Za-zăâîșțĂÂÎȘȚ\s-]+$/
^^^^^^^^
见
(?!\s+$)
前瞻在最开始时执行一次,如果在字符串末尾有一个或多个空格,则返回false
此外,您的正则表达式包含一个经典版本的[a-z]
,它不仅匹配ASCII字母,还需要将其替换为[a-Za-z]
(或者仅[a-z]
,并使用/i
不区分大小写的修饰符)
此外,字符类中的-
通常放在末尾,以避免转义,它将被解析为文字连字符(但是,如果其他开发人员必须通过向字符类添加更多符号来更新此模式,则可能需要转义)
万一这是一个不支持lookarounds的正则表达式引擎:
^[A-Za-zăâîșțĂÂÎȘȚ\s-]*[A-Za-zăâîșțĂÂÎȘȚ-][A-Za-zăâîșțĂÂÎȘȚ\s-]*$
它至少需要允许集合中的1个非空格字符(也匹配1个强制符号)
您可以使用负前瞻来限制此通用模式:
/^(?!\s+$)[A-Za-zăâîșțĂÂÎȘȚ\s-]+$/
^^^^^^^^
见
(?!\s+$)
前瞻在最开始时执行一次,如果在字符串末尾有一个或多个空格,则返回false
此外,您的正则表达式包含一个经典版本的[a-z]
,它不仅匹配ASCII字母,还需要将其替换为[a-Za-z]
(或者仅[a-z]
,并使用/i
不区分大小写的修饰符)
此外,字符类中的-
通常放在末尾,以避免转义,它将被解析为文字连字符(但是,如果其他开发人员必须通过向字符类添加更多符号来更新此模式,则可能需要转义)
万一这是一个不支持lookarounds的正则表达式引擎:
^[A-Za-zăâîșțĂÂÎȘȚ\s-]*[A-Za-zăâîșțĂÂÎȘȚ-][A-Za-zăâîșțĂÂÎȘȚ\s-]*$
它至少需要允许集合中的1个非空格字符(也匹配1个强制符号)
将
-
移动到字符类的末尾或开头。了解您在其中使用的语言也会有所帮助。@chris85谢谢-我不太清楚,我怀疑这是elasticsearch,其中-
只应放在字符类的开头,以便作为文字符号进行分析,将其移动到字符类的末尾也应该在这里起作用。将-
移动到字符类的末尾或开头。了解您在其中使用的语言也会有所帮助。@chris85谢谢-我不太清楚,我怀疑这是elasticsearch,其中-
应该只放在字符类的开头,作为文字符号进行解析,将其移动到字符类的结尾也应该在这里起作用。另外,这里的捕获组没有意义,我从模式周围删除了(
和)
,除非您确实需要最后一个字符进行进一步操作。此外,这里的捕获组没有意义,我从模式周围删除了(
和)
,除非你真的需要最后一个角色来进行进一步的操作。