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
失败。