Javascript 匹配由单个空格分隔的单词,开头或结尾不带空格
我的目标是创建一个允许字母数字和任何特殊字符的正则表达式Javascript 匹配由单个空格分隔的单词,开头或结尾不带空格,javascript,regex,Javascript,Regex,我的目标是创建一个允许字母数字和任何特殊字符的正则表达式 Example of accepted words: Test 1 Test 123 !#@# 但是它不应该接受单词前后有空格的字符,也不应该接受多个空格,或者只接受空格 Example of unaccepted words: Test 1 - spaces before Test 1 - multiple spaces between Test(spaces) - spaces after (only spaces)
Example of accepted words:
Test 1
Test 123 !#@#
但是它不应该接受单词前后有空格的字符,也不应该接受多个空格,或者只接受空格
Example of unaccepted words:
Test 1 - spaces before
Test 1 - multiple spaces between
Test(spaces) - spaces after
(only spaces) - only spaces
那么:
^[^ ]+( [^ ])*$
请根据您将用于正则表达式的语言对特殊字符进行转义。关于:
^[^ ]+( [^ ])*$
请根据您将用于正则表达式的语言对特殊字符进行转义。您可以
将字符串拆分为空格,然后使用每一个
确保结果中没有空字符串,而不是使用正则表达式(这意味着在单词的开头或结尾或单词之间的某个地方有额外的空格)
const tests=['Test 1'、'Test 1'、'Test 123!#@#'、'Test 1'、'Test'、'';
const passes=str=>str.split(“”).every(布尔);
document.getElementById('results')。textContent=
tests.map(str=>`${str}':${passes(str)}`)。join('\n');
不使用regexp,您可以拆分空格上的字符串,然后使用每个
确保结果中没有空字符串(这意味着在开头或结尾或单词之间的某个地方有额外的空格)
const tests=['Test 1'、'Test 1'、'Test 123!#@#'、'Test 1'、'Test'、'';
const passes=str=>str.split(“”).every(布尔);
document.getElementById('results')。textContent=
tests.map(str=>`${str}':${passes(str)}`)。join('\n');
我认为您可以使用这样的正则表达式:
^[^ ]+( \S+)+$
我认为您可以使用这样的正则表达式:
^[^ ]+( \S+)+$
这应该可以做到:
^[\w]+([\w]+)*$
这应该可以做到:
^[\w]+([\w]+)*$
您可以将\S
用于[^]
@torazaburo注意,问题是关于空格。\S
还将匹配制表和换行。您可以将\S
用于[^]
@torazaburo注意,问题是关于空格的。\S
也会匹配表格和换行。如果单词前面有一个空格怎么办?如果您尝试一下,就会看到,拆分的结果中会出现一个初始空字符串,这将导致每个都失败。如果单词前有一个空格?您将看到,如果尝试它,将导致split
的结果中出现一个初始空字符串,这将导致every
失败。